组的总和,但r中的每一行保持相同的值

组的总和,但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和组的和来创建一个新变量,如果我和正常值相加,数据的维数会减少,我的案例需要保留并重复每一行

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,就像您处理工具的方式一样