A B
2 3
5 7
7 4
2 8
有什么办法可以交换特定的观察结果吗?我试图交换 A 中大于 B 同一行中的观察值的观察值。 在上面的 data.frame 中,A 列第三行 (7) 中的观察结果是 > B 列第三行 (4) 中的观察结果,我的目标是交换两者。
期望的输出
A B
2 3
5 7
4 7
2 8
我尝试过使用 &
df$A[df$A > df$B] <- df$B[df$A > df$B] & df$B[df$A >df$B] <- df$A[df$A >df$B]
我也尝试过嵌套的 ifelse
ifelse(df$A > df$B, df$A[df$A > df$B] <- df$B[df$A > df$B],
ifelse(df$A > df$B, df$B[df$A >df$B] <- df$A[df$A >df$B], df$b))
任何帮助将不胜感激。
德雷
最佳答案
我们可以使用 apply
和 MARGIN=1
以及 sort
来循环遍历行
df1[] <- t(apply(df1, 1, sort))
df1
# A B
#1 2 3
#2 5 7
#3 4 7
#4 2 8
或者使用 pmax/pmin
重新排列“A”和“B”中的值
transform(df1, A=pmin(A,B), B= pmax(A,B))
关于r - 使用 R 交换 data.frame 同一行中的特定观察值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34141697/