R 按组求和,包括中间组
我有: 你可以试试这个R 按组求和,包括中间组,r,R,我有: 你可以试试这个 group value 1 1 4 2 2 5 3 3 0 4 4 5 5 5 6 library(tidyr) 图书馆(dplyr) df%>% 突变(组=因子(组,1:5))%>% 完成(组)%%>%group由(组)%%>% dplyr::总结(值=总和(值,na.rm=T)) 组值 1 1 4 2 2 5 3 3 0 4 4 5 5
group value
1 1 4
2 2 5
3 3 0
4 4 5
5 5 6
library(tidyr)
图书馆(dplyr)
df%>%
突变(组=因子(组,1:5))%>%
完成(组)%%>%group由(组)%%>%
dplyr::总结(值=总和(值,na.rm=T))
组值
1 1 4
2 2 5
3 3 0
4 4 5
5 5 6
您可以试试这个
group value
1 1 4
2 2 5
3 3 0
4 4 5
5 5 6
library(tidyr)
图书馆(dplyr)
df%>%
突变(组=因子(组,1:5))%>%
完成(组)%%>%group由(组)%%>%
dplyr::总结(值=总和(值,na.rm=T))
组值
1 1 4
2 2 5
3 3 0
4 4 5
5 5 6
使用tidyverse
,您可以轻松做到这一点:
library(tidyr)
library(dplyr)
df %>%
mutate(group=factor(group, 1:5)) %>%
complete(group) %>%group_by(group)%>%
dplyr::summarise(value=sum(value,na.rm = T))
group value
<fctr> <dbl>
1 1 4
2 2 5
3 3 0
4 4 5
5 5 6
结果是:
library(dplyr)
library(tidyr)
df %>%
group_by(group) %>%
summarise(valuesum = sum(value)) %>%
full_join(., expand(df, group = 1:5)) %>%
complete(group, fill = list(valuesum = 0))
使用
tidyverse
,您可以轻松完成此操作:
library(tidyr)
library(dplyr)
df %>%
mutate(group=factor(group, 1:5)) %>%
complete(group) %>%group_by(group)%>%
dplyr::summarise(value=sum(value,na.rm = T))
group value
<fctr> <dbl>
1 1 4
2 2 5
3 3 0
4 4 5
5 5 6
结果是:
library(dplyr)
library(tidyr)
df %>%
group_by(group) %>%
summarise(valuesum = sum(value)) %>%
full_join(., expand(df, group = 1:5)) %>%
complete(group, fill = list(valuesum = 0))
您可以从基本R使用
merge
。我已将data.frame的名称更改为dat
,因为df
是R函数的名称
library(data.table)
setDT(df)[.(group = 1:5), on = 'group', sum(value, na.rm = TRUE), by = .EACHI]
dat您可以从基本R使用merge
。我已将data.frame的名称更改为dat
,因为df
是R函数的名称
library(data.table)
setDT(df)[.(group = 1:5), on = 'group', sum(value, na.rm = TRUE), by = .EACHI]
dat只需执行merge
,然后使用is.NA
将NA
更改为0,即merge(data.frame(group=1:5)、aggregate(value~group,data=df,FUN='sum')、all.x=TRUE)
或者,rbind
一个数据.frame,其中包含缺少的组值,并在此基础上进行聚合,如aggregate>(value~group,data=rbind(df,data.frame(group=setdiff(1:5,unique(df$group)),value=0),FUN='sum')
。只需进行merge
,然后使用is.NA
将NA更改为0,即合并(data.frame(group=1:5),聚合(value~group,data=df,FUN='sum'),all.x=TRUE)
或者,rbind
一个缺少组值的data.frame,并在此基础上进行聚合,比如aggregate(value~group,data=rbind(df,data.frame)(group=setdiff(1:5,unique(df$group)),value=0),FUN='sum')
。OP想要一个基本R解决方案OP想要一个基本R解决方案OP想要一个基本R解决方案OP想要一个基本R解决方案OP想要一个基本R解决方案