【问题标题】:Doing operation on multiple numbered tables in R在 R 中对多个编号的表进行操作
【发布时间】:2018-08-06 18:36:51
【问题描述】:

我是 R 编程新手,我正在处理一个包含数百个变量和数千个观察值的庞大数据集。在这些变量中,我主要关心的是年龄。我想获得年龄函数中其他变量的平均值。我可以用这个得到更小的桌子:

for(i in 18:84) 
{
  n<- sprintf("SortAgeM%d",i)
  assign(x=n,subset(SortAgeM,subset=(SortAgeM$AGE>=i & SortAgeM$AGE<i+1)))
}
"SortAgeM85plus"<-subset(SortAgeM,subset=(SortAgeM$AGE>=85 & SortAgeM$AGE<100))

这为我提供了我关心的每个年龄的子数据集。然后我想得到每列的平均值。每列都是对特定大脑区域体积的观察。我很想知道音量是如何随时间减少的,我想知道给定年龄的人是否接近他们的平均年龄。

现在,我想再得到一行,每列的平均值。所以我尝试了这个:

for(i in 18:85) {
  addmargins((SortAgeM%d,i), margin=1, FUN= "mean")
}  

但它没有用......我被卡住了,我对 R 函数还不够熟悉,无法在网上找到解决方案...... 感谢您的帮助。

维克多

发布答案编辑:这就是我最终所做的:

for(i in 18:84) 
    {
      n<- sprintf("SortAgeM%d",i)
      assign(x=n,subset(SortAgeM,subset=(SortAgeM$AGE>=i & SortAgeM$AGE<i+1)))
      Ajustment<-c(NA,NA,NA,NA,NA,NA,NA) #first variables aren't numeric
      Line1<- colMeans(item[,8:217],na.rm=TRUE)
      Line<-c(Ajustment,Ligne1)
      assign(x=n, rbind(item,Ligne))
    }

【问题讨论】:

  • 你需要getassign
  • 这应该是一个容易回答的问题,但不清楚您到底想做什么。如果您可以包含起始数据和所需输出的示例,您将立即得到答案。请阅读How to AskHow to make a great R reproducible example
  • 我认为使用 getassign 几乎总是一个坏主意,即使对于 R 专家也是如此。将它们用作新手是彻底灾难的秘诀。这听起来像是一个简单的dplyrfilter %&gt;% group_by %&gt;% summarize 问题,但我不确定想要的结果到底是什么
  • 我想得到完全相同的数据集,多一行包含每一列的平均值
  • 如果您只想获取每一列的平均值,那么(正如@SmitM 建议的那样)colMeans(df) 在一行中执行此操作。但是,在您的问题中,您谈到获得means for each other variables in function of Age 这听起来不止于此。如果@SmitM 回答了您的问题,您应该接受他的回答,否则,包括您的起始数据和所需输出的示例。

标签: r


【解决方案1】:

如果你只是想要一个额外的行,每列的平均值,你可以像这样 rbind 你的 df 的 colMeans

df_new &lt;- rbind(df, colMeans(df))

【讨论】:

  • 它有效,我现在正在努力将它安装在一个循环中......谢谢
猜你喜欢
  • 2017-12-07
  • 1970-01-01
  • 2014-05-17
  • 2020-08-20
  • 2020-06-04
  • 2018-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多