在R中创建附加索引

时间:2014-12-07 18:54:38

标签: r

我有一个包含多个变量的data.frame对象。我正在尝试创建一个附加变量,该变量表示在许多其他变量中出现值(例如2)的次数。例如,如果

mydata <- data.frame(x=c(1, 2, NA), y = c(NA, 2, 2), z=c(NA, NA, 2))
   x  y  z
1  1 NA NA
2  2  2 NA
3 NA  2  2

然后我想创建一个新变量(z1),它表示2在该行中出现的次数,基于变量x和y。所以新的data.frame看起来像这样:

   x  y  z z1
1  1 NA NA 0
2  2  2 NA 2
3  NA 2 2  1

到目前为止,我尝试过使用if语句,但由于缺少值,它们会返回错误。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

你可以尝试

transform(mydata, z1=rowSums(cbind(x,y)==2, na.rm=TRUE))
#   x  y  z z1
#1  1 NA NA  0
#2  2  2 NA  2
#3 NA  2  2  1

答案 1 :(得分:1)

这应该做你想要的:

mydata$z1 <- apply(X = mydata[,c("x","y")] == 2, MARGIN = 1, FUN = sum, na.rm=TRUE)

mydata
   x  y  z z1
1  1 NA NA  0
2  2  2 NA  2
3 NA  2  2  1