我从一个庞大的原始数据集创建了60个数据集。它们是按年份划分的,我使用它们的年份编号对它们进行了命名-就像Year60的Year1、Year2、Year3、Year4等。每个数据集都有一列“汽车”和“周”。我尝试遍历每个数据集以按最大数量的汽车值进行排序,取该值所在的行,并获得该行的“周”值(基本上是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))
}这不管用:/真的很感谢大家的建议!
发布于 2019-12-06 14:25:54
如果您想保持列表完整,可以使用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))https://stackoverflow.com/questions/59207858
复制相似问题