R 不计算列中重复值的累积值之和
我在R中有这样的数据R 不计算列中重复值的累积值之和,r,function,dplyr,r-markdown,cumsum,R,Function,Dplyr,R Markdown,Cumsum,我在R中有这样的数据 x <- c(1,2,2,3,4,4,7,8) y <- c(300,200,200,150,100,100,30,20) df <- data.frame(x, y) 本质上,它不计算y的重复值。我在R怎么做?我尝试过不同的功能,但似乎不起作用。我希望答案是这样的 > Y [1] 300 500 500 650 750 750 780 800 > ans x y Y 1 1 300 300 2 2 200 500 3 2 20
x <- c(1,2,2,3,4,4,7,8)
y <- c(300,200,200,150,100,100,30,20)
df <- data.frame(x, y)
本质上,它不计算y的重复值。我在R怎么做?我尝试过不同的功能,但似乎不起作用。我希望答案是这样的
> Y
[1] 300 500 500 650 750 750 780 800
> ans
x y Y
1 1 300 300
2 2 200 500
3 2 200 500
4 3 150 650
5 4 100 750
6 4 100 750
7 7 30 780
8 8 20 800
我们可以获得
不同的
行,执行求和
,然后执行联接
library(dplyr)
df %>%
distinct() %>%
mutate(Y = cumsum(y)) %>%
right_join(df)
# x y Y
#1 1 300 300
#2 2 200 500
#3 2 200 500
#4 3 150 650
#5 4 100 750
#6 4 100 750
#7 7 30 780
#8 8 20 800
或者不使用任何联接,将“y”中的重复值替换为0,然后执行
cumsum
df %>%
mutate(Y = cumsum(y * !duplicated(y)))
# x y Y
#1 1 300 300
#2 2 200 500
#3 2 200 500
#4 3 150 650
#5 4 100 750
#6 4 100 750
#7 7 30 780
#8 8 20 800
或在
base R
df$Y <- with(df, cumsum(y * !duplicated(y)))
df$Y我们可以得到distinct
行,进行cumsum
然后进行连接
library(dplyr)
df %>%
distinct() %>%
mutate(Y = cumsum(y)) %>%
right_join(df)
# x y Y
#1 1 300 300
#2 2 200 500
#3 2 200 500
#4 3 150 650
#5 4 100 750
#6 4 100 750
#7 7 30 780
#8 8 20 800
或者不使用任何联接,将“y”中的重复值替换为0,然后执行cumsum
df %>%
mutate(Y = cumsum(y * !duplicated(y)))
# x y Y
#1 1 300 300
#2 2 200 500
#3 2 200 500
#4 3 150 650
#5 4 100 750
#6 4 100 750
#7 7 30 780
#8 8 20 800
或在base R
df$Y <- with(df, cumsum(y * !duplicated(y)))
df$Y