在函数/循环中使用tapply,它将替换数据帧列长度的变量名

时间:2013-05-17 18:24:26

标签: r function loops statistics tapply

在R中,我有一个记录的数据集(我称之为明星),其中附加了大约50个人口统计数据(每个人口统计数据可以称为var1,var2,var3等)。我使用以下命令将数据集拆分为~10%组:

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

然后我用了

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

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

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

我是一个编写代码的初学者,所以要温柔。对于输出,我只想要一些东西,如果需要的话,可以使用文本到列的功能轻松地复制和粘贴到Excel中(所以可能是某种表)。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

您要查找的命令是mapply,返回的是列表对象。

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)