使用group_by和piping函数循环数据帧列表?
我有一个数据帧列表,我正在尝试应用一个脚本,该脚本适用于单个数据帧。 脚本的一部分同时使用管道和编组方式:使用group_by和piping函数循环数据帧列表?,r,R,我有一个数据帧列表,我正在尝试应用一个脚本,该脚本适用于单个数据帧。 脚本的一部分同时使用管道和编组方式: df2 <- df1 %>% group_by (col1) %>% summarise(newcol = sum(col2)) df2% 分组依据(col1)%>% 总结(newcol=总和(col2)) 我已经尝试了lapply的各种循环或变体,但还没有找到一种方法让它能够处理数据帧列表,在这些数据帧列表中,它可以是: mylist2 <- mylist1
df2 <- df1 %>%
group_by (col1) %>%
summarise(newcol = sum(col2))
df2%
分组依据(col1)%>%
总结(newcol=总和(col2))
我已经尝试了lapply的各种循环或变体,但还没有找到一种方法让它能够处理数据帧列表,在这些数据帧列表中,它可以是:
mylist2 <- mylist1 %>%
group_by (col1) %>%
summarise(newcol = sum(col2))
mylist2%
分组依据(col1)%>%
总结(newcol=总和(col2))
但显然,改变了使用循环或重叠的方式。我可能在这里遗漏了一些简单的东西,但如果能得到一些帮助,我将不胜感激。谢谢
PS-我试图提供列表中的数据,但无法提供可复制的样本 这里有一个
tidyverse
方法
# generate some data
mylist1 <- replicate(2, data.frame(col1 = rep(letters[1:2], 2),
col2 = 1:4),
simplify = FALSE)
library(purrr)
library(dplyr)
mylist1 %>%
map(., ~ group_by(., col1) %>%
summarise(new_col = sum(col2)))
#[[1]]
# A tibble: 2 x 2
# col1 new_col
# <fct> <int>
#1 a 4
#2 b 6
#[[2]]
# A tibble: 2 x 2
# col1 new_col
# <fct> <int>
#1 a 4
#2 b 6
如果数据帧具有相同的列,那么绑定它们也可能是一个不错的选择:
mylist1%>%bind\u rows(.id=“id”)%%>%group\u by(id,col1)%%>%summary\u at(“col2”,sum)
lapply(mylist1, function(x)
tapply(X = x[["col2"]], INDEX = x[["col1"]], FUN = 'sum'))
#[[1]]
#a b
#4 6
#[[2]]
#a b
#4 6