我有一个数据集,它有两个变量,一个字符和一个数字:
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/