Определите, все ли 3 столбца отрицательные или положительные, строка за строкой - PullRequest
0 голосов
/ 01 мая 2018

У меня есть набор данных, состоящий из 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

Спасибо.

1 Ответ

0 голосов
/ 01 мая 2018

Мы можем использовать rowSums

i1 <- (!rowSums(df > 0)) & (!rowSums(df < 0))
df[i1,]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...