R 在循环内部使用摘要时收到错误消息
具有包含244个数据帧的列表。此列表称为d,R 在循环内部使用摘要时收到错误消息,r,dplyr,R,Dplyr,具有包含244个数据帧的列表。此列表称为d,d[[1]]如下所示 d[[1]] year pos days sal 1 2009 A 31 2000 2 2009 B 60 4000 3 2009 C 10 600 4 2010 B 10 1000 5 2010 D 90 7000 我想按年份分组数据,添加天数和sal,并选择组中天数最多的pos 结果是: year pos days
d[[1]]
如下所示
d[[1]]
year pos days sal
1 2009 A 31 2000
2 2009 B 60 4000
3 2009 C 10 600
4 2010 B 10 1000
5 2010 D 90 7000
我想按年份分组数据,添加天数和sal,并选择组中天数最多的pos
结果是:
year pos days sal
1 2009 B 101 6600
2 2010 D 100 8000
我知道如何做到这一点,当它涉及到的情况下,做它只有一个数据帧。
我是这样做的:
library(dplyr)
ygroup<-group_by(d[[1]]$year)
summarise(ygroup, pos = pos[which.max(days)], days = sum(days), sal = sum(sal))
(我认为这部分;pos=pos[which.max(days)]
造成了问题,但我不太确定……)
我怎样才能解决这个问题
如有任何意见,将不胜感激!:) 您的错误在e[[i]]您的错误在e[[i]我们可以使用
lappy
和匿名函数调用来循环数据帧的列表
我们可以使用lappy
和匿名函数调用来循环data.frame的列表
尝试使用lappy
即lappy即lappy(d,function(x)x%>%groupby(year)%%>%总结(pos=pos[which.max(days)],days=sum(days),sal=sum(days))
尝试使用lappy
即lappy(d,function(x)x%>%groupby(year)%%总结(pos=pos[which.max(days),days=sum,days=sum(days),sal))
e<-list()
ygroup<-list()
for(i in 1:244){
ygroup[[i]]<-group_by(d[[i]]$year)
e[[i]]<-summarise(ygroup[[i]], pos = pos[which.max(days)], days = sum(days), sal = sum(sal))
}
Error: expecting a single value
ygroup<-lapply(ygroup,FUN=group_by,d$year)
e<-lapply(ygroup,FUN=summarise,pos = max(days), days = sum(days), sal = sum(sal))
lapply(d, function(x) x %>%
group_by(year) %>%
summarise(pos = pos[which.max(days)],
days = sum(days), sal = sum(sal)))