【问题标题】:Determine if all 3 columns are all negative or positive, row by row逐行确定所有 3 列都是负数还是正数
【发布时间】:2018-05-01 12:11:27
【问题描述】:

我有一个由 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

谢谢。

【问题讨论】:

  • abs(rowSums(sign(df))) == 3

标签: r multiple-columns rows


【解决方案1】:

我们可以使用rowSums

i1 <- (!rowSums(df > 0)) & (!rowSums(df < 0))
df[i1,]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多