在R中合并三个类别/因子变量

问题描述 投票:0回答:1

对于气候变化行动,我有三个分类变量。人们可以采取三个级别的响应:“不,我不会这样做”,“是的,我愿意这样做”和“嘿,我已经这样做了,伙伴!” 。我想合并这三个响应,以便只有一个气候变化行动变量。我已经将响应转换为数字。所以我有:

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对应值的最大值。谢谢!

r variables merge categorical-data
1个回答
0
投票

我们可以使用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))
© www.soinside.com 2019 - 2024. All rights reserved.