r - 如何在 r 中的一组观察值之间切换值

标签 r switch-statement

我有一个数据集,它有两个变量,一个字符和一个数字:

structure(list(ID = c("A", "B", "C", "D", "E", "A", "B", "C", 
"D", "E", "A", "B", "C", "D", "E", "A", "B", "C", "D", "E"), 
value = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 
15, 16, 17, 18, 19, 20)), class = "data.frame", row.names = c(NA, 
-20L))

我想做的是为“A”和“E”的每个序列在每组“A”和“E”之间切换“value”变量的值。

因此,我的最终输出应该是这样的:

ID   value
A      5
B      2
C      3
D      4
E      1
A      10
B      7 
C      8
D      9
E      6
A      15
B      12
C      13
D      14
E      11
A      20
B      17
C      18
D      19
E      16

我在这里使用数字序列只是为了简化示例,但我的实际值不是 1 到 20 的序列。因此,具有数字模式的解决方案在我的数据中不起作用。

谢谢!

最佳答案

在基础 R 中你可以这样做:

# matrix with indices of A's and E's in its two rows
ae <- matrix(which(df$ID %in% c('A', 'E')), nrow=2)
# switch A and E
df$value[ae] <- df$value[ae[2:1, ]]

df
#    ID value
# 1   A     5
# 2   B     2
# 3   C     3
# 4   D     4
# 5   E     1
# 6   A    10
# 7   B     7
# 8   C     8
# 9   D     9
# 10  E     6
# 11  A    15
# 12  B    12
# 13  C    13
# 14  D    14
# 15  E    11
# 16  A    20
# 17  B    17
# 18  C    18
# 19  D    19
# 20  E    16

关于r - 如何在 r 中的一组观察值之间切换值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74317065/

相关文章:

c - switch 语句在 C 中如何工作?

Java switch 语句

jquery - 使用 Jquery 的持久样式表切换器

R PCA 图使用 Hotelling 的 T2 作为置信区间

css - 我怎样才能简单地添加一个 css 文件来更改我 Shiny 的应用程序的背景颜色

c++ - 如何在 Switch 语句中使用 IF

C++:Switch 语句与查找表的性能

r - Ggplot2 中的有条件着色条

r - 用于在 ggplot2 中绘图的归一化系列

r - 将 ggplot 嵌入 knitr 文档失败