首页 > 解决方案 > 用多个变量的值编码一个变量

问题描述

我需要用 4 个先前变量中的值编写一个新变量。如果 col 1:4 的值为 1 或 2,我希望分配新变量以将该值设为 1 或 2。

样本数据。

df1<- (data.frame(ID = c("a", "b", "c", "d", "e"),
              var1 = c(1,0 ,2 ,0 ,0 ),
              var2 = c(0, 2, 0, 0, 0),
              var3 = c(0,0,0,2,2),
              var4 = c(0,0,"NA", "NA", "NA")))

我想要的是看起来像这样的东西:

df1<- (data.frame(ID = c("a", "b", "c", "d", "e"),
              var1 = c(1,0 ,2 ,0 ,0 ),
              var2 = c(0, 2, 0, 0, 0),
              var3 = c(0,0,0,2,2),
              var4 = c(0,0,"NA", "NA", "NA"),
              var5 = c( 1,2,2,2,2)))

新变量 var5 是我想从 var1:var4 中找到的值创建的变量,我知道如何执行ifelse语句并尝试执行循环失败。

标签: rdata-science

解决方案


如果所有列都是数字,则可以使用rowSums(). 像这样:


df1<- data.frame(ID = c("a", "b", "c", "d", "e"),
                  var1 = c(1,0 ,2 ,0 ,0 ),
                  var2 = c(0, 2, 0, 0, 0),
                  var3 = c(0,0,0,2,2),
                  var4 = c(0,0,NA, NA, NA))

df2$var5 <- rowSums(df1[,2:5], na.rm = TRUE)

df2
#   ID var1 var2 var3 var4 var5
# 1  a    1    0    0    0    1
# 2  b    0    2    0    0    2
# 3  c    2    0    0   NA    2
# 4  d    0    0    2   NA    2
# 5  e    0    0    2   NA    2



推荐阅读