1

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

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

然后我用

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

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

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

我是编写代码的初学者,所以要温柔。对于输出,我只想要一些我可以在需要时使用 text-to-columns 功能轻松复制并粘贴到 Excel 中的内容(所以可能是某种表格)。

4

2 回答 2

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)
于 2013-05-17T20:36:03.733 回答
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)
于 2013-05-18T00:01:30.010 回答