如何使用循环循环访问多个数据集,以便在 R 中为每个数据集获取一个输出?



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


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。

我试过了:


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))
}

那没有用:/任何建议将不胜感激!

如果要保持列表不变,可以使用sapply遍历每个数据帧,并提取具有最大Car值的Week行数。

sapply(mget(paste0('Year', 1:60)), function(x) x$Week[which.max(x$Car)])

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

library(dplyr)
bind_rows(mget(paste0('Year', 1:60)), .id = "id") %>%
group_by(id) %>%
slice(which.max(Car))

最新更新