Объединение трех категориальных / факторных переменных в R - PullRequest
0 голосов
/ 12 января 2020

У меня есть три категориальные переменные к вопросу о действии изменения климата. Есть три уровня ответов, которые люди могут принять: «Нет, я не собираюсь этого делать», «Да, я бы хотел это сделать» и «Эй, я уже делаю это, приятель!» , Я хотел бы объединить три ответа, чтобы у меня была только одна переменная действия по изменению климата. Я преобразовал ответы в цифру c. Итак, у меня есть:

x=c(1,2,1,NA,NA)
y=c(2,1,3,1,NA)
z=c(2,NA,3,2,NA)

, что я хотел бы создать, это третья переменная, 'a'

  x  y  z  a
  1  2  2  2
  2  1 NA  2
  1  3  3  3
 NA  1  2  2
 NA NA NA NA

'a' будет принимать наибольшее значение соответствующего значения x , y или z. Спасибо!

1 Ответ

0 голосов
/ 12 января 2020

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

library(dplyr)
tibble(x, y, z) %>%
     mutate(a = pmax(x, y, z, na.rm = TRUE))
# A tibble: 5 x 4
#      x     y     z     a
#  <dbl> <dbl> <dbl> <dbl>
#1     1     2     2     2
#2     2     1    NA     2
#3     1     3     3     3
#4    NA     1     2     2
#5    NA    NA    NA    NA

Поскольку нам нужны все столбцы, его можно упростить как

tibble(x, y, z) %>%
    mutate(a = pmax(!!! ., na.rm = TRUE))

Или в base R

cbind(x, y, z, a = pmax(x, y, z, na.rm = TRUE))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...