2014-12-07 42 views
0

我有一个包含多个变量的data.frame对象。我试图创建一个额外的变量,表示一个值(例如2)在许多其他变量中出现的次数。例如,如果在R中创建添加索引

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语句到目前为止已经试过,但他们返回,因为缺失值的误差。有什么想法吗?

回答

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 
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