R соответствует значению столбца на основе столбца (хитрый) - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть такой кадр данных:

label1 label2 label3
5      3      2
4.1    5      4
2      1      3

Я хочу добавить новый столбец на основе условия:

  1. Соответствовать заголовку столбца, если значение больше 4
  2. Максимальное значение из трех, если два или более значений больше 4

Таким образом, результирующий df будет выглядеть так:

label1 label2 label3 Match
5      3      2      label1
4.1    5      4      label2
2      1      3      none

So for the first row 5 is greater than 4 so label1
For the second row label2 as it is the highest (two values higher than 4)
For the third none as all values are below 4

Это кажется хитрый с R как с Excel с max +, если функции могут быть выполнены.

Thx!

1 Ответ

0 голосов
/ 02 апреля 2020

Мы можем использовать max.col, чтобы получить индекс строки с максимальным значением. Если в строке нет значения больше 4, мы меняем значение match на 'none' для этих строк.

df1$match <- paste0('label', max.col(df1))
df1$match[rowSums(df1[-ncol(df1)] > 4) == 0] <- 'none'

df1
#  label1 label2 label3  match
#1    5.0      3      2 label1
#2    4.1      5      4 label2
#3    2.0      1      3   none

данные

df1 <- structure(list(label1 = c(5, 4.1, 2), label2 = c(3L, 5L, 1L), 
label3 = c(2L, 4L, 3L)), class = "data.frame", row.names = c(NA,-3L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...