我有一个由3列组成的数据集,每列的值在-1和1之间变化。
A B C
0.0373 0.0373 0.0373
-0.0586 -0.0407 -0.1109
0.0458 0.0458 0.0458
0.0621 0.0621 0.0621
0.0452 0.0452 0.0452
我希望识别A,B和C的符号不相同的所有行。因此,例如,应返回第2,4和5行,因为其中一列值的符号与其他两列的符号不同。
我从这个解决方案开始,但想知道是否有更简单,更清洁的东西。
df$test = (df$A > 0 & df$B > 0 & df$C > 0)
df$test2 = (df$A < 0 & df$B < 0 & df$C < 0)
result = subset(df,df$test == FALSE & df$test2 == FALSE)
A B C test test2
-0.0586 -0.0407 0.1109 FALSE FALSE
0.0621 -0.0621 0.0621 FALSE FALSE
-0.0452 0.0452 0.0452 FALSE FALSE
感谢。
答案 0 :(得分:3)
我们可以使用rowSums
i1 <- (!rowSums(df > 0)) & (!rowSums(df < 0))
df[i1,]