组的总和,但r中的每一行保持相同的值
我有一个数据框,我想通过每个ID和组的和来创建一个新变量,如果我和正常值相加,数据的维数会减少,我的案例需要保留并重复每一行组的总和,但r中的每一行保持相同的值,r,dataframe,R,Dataframe,我有一个数据框,我想通过每个ID和组的和来创建一个新变量,如果我和正常值相加,数据的维数会减少,我的案例需要保留并重复每一行 ID <- c(rep(1,3), rep(3, 5), rep(4,4)) Group <-c(1,1,2,1,1,1,2,2,1,1,1,2) x <- c(1:12) y<- c(12:23) df <- data.frame(ID,Group,x,y) ID Group x y 1 1 1 1 12 2 1
ID <- c(rep(1,3), rep(3, 5), rep(4,4))
Group <-c(1,1,2,1,1,1,2,2,1,1,1,2)
x <- c(1:12)
y<- c(12:23)
df <- data.frame(ID,Group,x,y)
ID Group x y
1 1 1 1 12
2 1 1 2 13
3 1 2 3 14
4 3 1 4 15
5 3 1 5 16
6 3 1 6 17
7 3 2 7 18
8 3 2 8 19
9 4 1 9 20
10 4 1 10 21
11 4 1 11 22
12 4 2 12 23
有什么想法吗?简称:
df$sumx <- with(df,ave(x,ID,Group,FUN = sum))
df$sumy <- with(df,ave(y,ID,Group,FUN = sum))
df$sumx简称:
df$sumx <- with(df,ave(x,ID,Group,FUN = sum))
df$sumy <- with(df,ave(y,ID,Group,FUN = sum))
df$sumx我们可以使用dplyr
library(dplyr)
df %>%
group_by(ID, Group) %>%
mutate_each(funs(sum)) %>%
rename(sumx=x, sumy=y) %>%
bind_cols(., df[c("x", "y")])
如果只有两列要求和,则
df %>%
group_by(ID, Group) %>%
mutate(sumx = sum(x), sumy = sum(y))
我们可以使用dplyr
library(dplyr)
df %>%
group_by(ID, Group) %>%
mutate_each(funs(sum)) %>%
rename(sumx=x, sumy=y) %>%
bind_cols(., df[c("x", "y")])
如果只有两列要求和,则
df %>%
group_by(ID, Group) %>%
mutate(sumx = sum(x), sumy = sum(y))
如果是单列,您可以使用以下代码获得所需内容,如果您有多个列,则相应地添加:
library(dplyr)
data13 <- data12 %>%
group_by(Category) %>%
mutate(cum_Cat_GMR = cumsum(GrossMarginRs))
库(dplyr)
数据13%
组别(类别)%>%
突变(cum_Cat_GMR=cumsum(GrossMarginRs))
如果是单列,您可以使用以下代码获取所需内容,如果您有多个列,则相应地添加:
library(dplyr)
data13 <- data12 %>%
group_by(Category) %>%
mutate(cum_Cat_GMR = cumsum(GrossMarginRs))
库(dplyr)
数据13%
组别(类别)%>%
突变(cum_Cat_GMR=cumsum(GrossMarginRs))
我们如何使用数据。table我得到了setDT(df)[,':='(sumx=sum(y),sumy=sum(x)),by=(ID,Group)][@Stat-它可能更易于扩展到cols我们如何使用数据。table我得到了setDT(df)[,':='(sumx=sum(y),sumy=sum(x)),by=(ID,Group)][]@Stat-它可能更易于扩展到cols,就像您处理工具的方式一样