首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用循环遍历多个数据集以获得R中每个数据集的一个输出?

如何使用循环遍历多个数据集以获得R中每个数据集的一个输出?
EN

Stack Overflow用户
提问于 2019-12-06 14:16:21
回答 1查看 268关注 0票数 0

我从一个庞大的原始数据集创建了60个数据集。它们是按年份划分的,我使用它们的年份编号对它们进行了命名-就像Year60的Year1、Year2、Year3、Year4等。每个数据集都有一列“汽车”和“周”。我尝试遍历每个数据集以按最大数量的汽车值进行排序,取该值所在的行,并获得该行的“周”值(基本上是60年中每年汽车销量最多的那一周)。我的代码是:

代码语言:javascript
运行
复制
    Year1$Car <- as.integer(Year1$Car)
    df.1 <- aggregate(Car ~ Week, Year1, max)
    df.a <- merge(df.1, Year1)
    print(paste("Year 1 Most Cars Sold in Week", print(df.a$Week))

我正在尝试找到一种方法来更快地完成这一过程,而不仅仅是手动输入每个数据集的Year1、Year2等,一直到Year60。

我试过了:

代码语言:javascript
运行
复制
    for (i in 1:60){
    Year"i"$Car <- as.integer(Year"i"$Car)
    df.1 <- aggregate(Car ~ Week, Year"i", max)
    df.a <- merge(df.1, Year"i")
    print(paste("Year "i" Most Cars Sold in Week", print(df.a$Week))
    }

这不管用:/真的很感谢大家的建议!

EN

回答 1

Stack Overflow用户

发布于 2019-12-06 14:25:54

如果您想保持列表完整,可以使用sapply遍历每个数据帧并提取具有最大Car值的行的Week编号。

代码语言:javascript
运行
复制
sapply(mget(paste0('Year', 1:60)), function(x) x$Week[which.max(x$Car)])

或者使用dplyr,您可以将所有数据集组合成一个group_by,每个Year并选择Car值最大的行。

代码语言:javascript
运行
复制
library(dplyr)

bind_rows(mget(paste0('Year', 1:60)), .id = "id") %>%
  group_by(id) %>%
  slice(which.max(Car))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59207858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档