Пересекаются векторы сравнения в r - PullRequest
0 голосов
/ 24 мая 2018

У меня есть датафрейм с 4 столбцами, вот структура.

Я хотел бы создать новый вектор (valuetofind) со значением 1, если все мои строки имеют номер 1 и -1, если все мои строки имеют номер -1.
В противном случае просто заполнитеНет.

str(results)
'data.frame':   435 obs. of  4 variables:
 $ model.knn: Factor w/ 2 levels "-1","1": 2 2 2 2 2 2 2 1 2 2 ...
 $ p.arbre  : Factor w/ 2 levels "-1","1": 2 2 1 1 2 2 2 1 2 2 ...
 $ p.svm    : Factor w/ 2 levels "-1","1": 2 2 2 2 2 2 2 2 2 2 ...
 $ p.rf     : Factor w/ 2 levels "-1","1": 2 2 2 1 2 2 2 1 2 2 ...


model.knn p.arbre p.svm p.rf  Valuetofind
    1        1      1    1         1
   -1       -1      1    1        NA
   -1       -1     -1   -1        -1

Я пробовал много вещей, но я заблокирован

Я пытался преобразовать в числовые значения, в моем фрейме данных.Это дало мне значения 2 и 1 instread моих -1 и 1.

1 Ответ

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

Используйте вложенные ifelse() и rowSums() для base решения.

results <- data.frame(model.knn = c(1, -1, -1), p.arbre = c(1, -1, -1), p.svm = c(1, 1, -1), p.rf = c(1, 1, -1))

results["Valuetofind"] <- ifelse(rowSums(results) == ncol(results), 1, 
                                  ifelse(rowSums(results) == -ncol(results), -1, NA))

results
  model.knn p.arbre p.svm p.rf Valuetofind
1         1       1     1    1           1
2        -1      -1     1    1          NA
3        -1      -1    -1   -1          -1

Вы можете попробовать dplyr::case_when(), если имеется несколько ifelse() вложений.

...