2015-11-17 53 views
0

我正在寻找一种快速简单的替代方法来创建新的索引变量。例如:在基于几个索引变量的R中创建索引变量

var1 var2 var3 newvar 
0 1 1 1 
0 0 0 0 
1 0 0 1 
1 1 1 1 
1 0 9 1 
1 9 9 1 
0 9 9 1 

如何在R中只有一行创建newvar列? 我也有数据框中“未回答”的值9。我只想数值1(而不是其他)。

我找了SPSS-替代代码:

COMPUTE newvar= any(1,var1,var2,var3). 
+0

任何你已经尝试过?为什么这不起作用? SO不是代码写入服务。 – Heroka

+1

'dat $ newvar < - apply(dat,1,any)'可以做。你想要那个吗? – jogo

+0

我试过了: df <-cbind.data.frame(var1,var2,var3) ivar < - sapply(1,function(x)rowSums(df == x)) –

回答

1

要算值1的每一行你可以使用:

mydf$newvar <- rowSums(mydf==1) 

如果你想看看是否任何值为1(因为您打算使用outpur newvar暗示):

mydf$newvar <- +(rowSums(mydf==1)>0) 
0

谢谢Henrik! 你说得对。它在你提到的线程中得到了回答。 这里再次答案,因为没有什么是平凡的大家:-)

newvar<-as.numeric(apply(cbind(var1,var2,var3), 1, function(r) any(r == 1))) 

Elch冯奥斯陆