2013-05-17 19 views
1

在R中,我有一个包含大约50个附加人口统计特征的记录的数据集(我称之为star) var1,var2,var3等)。我已通过使用下面的命令拆分在〜10%组数据集:在函数/循环中使用tapply,它将替换数据帧的列长度的变量名称

star$cut=cut2(star$var1, g=10) 

然后我用

tapply(star$RESPCODE, star$cut, mean) 

来计算每个十组的响应率。

我只是试图运行一个循环或执行这两个命令的函数,以便我不需要手动替换每个变量名称。我想用这个函数/循环将var1替换为var2,var3,var4等。

我是一个初学者,写的代码很温柔。对于输出而言,我只是喜欢一些东西,如果需要的话,我可以使用text-to-columns功能轻松地将其复制并粘贴到Excel中(所以可能是某种表格)。

回答

0

这样的事情呢?

varN = 1:10 
res = vector("list") 
for (n in varN) 
    star[,paste("cut",n,sep="")] = cut2(star[,paste("var",n,sep=""), g=10) 
    res[n] = tapply(star$RESPCODE, star[,paste("cut",n,sep="")], mean) 
0

您正在查找的命令是mapply,并且return是一个列表对象。

mapply(function(x, dd) { 
     dd$cut <- cut2(dd[, x], g=10) 
     tapply(dd$RESPCODE, dd$cut, mean) 
     }, c('var1', 'var2', 'var3'), MoreArg=list(dd=star), SIMPLIFY=FALSE) 
相关问题