我想獲得多年來和每個物體的累積金額。
下面是一個例子,以及我到目前為止所嘗試的:
data<-data.frame(id=c("a","a","a","b","a","b","b"),cars=c(1,1,1,1,1,1,1),year=c(2001,2001,2002,2003,2003,2003,2004))
我努力了 :
library(tidyverse)
library(stringr)
library(dplyr)
library(tidyr)
data %>% group_by(id,year) %>% mutate(csum = (cumsum(cars))) %>% top_n(1, csum)
id cars year csum
<chr> <dbl> <dbl> <dbl>
1 a 1 2001 2
2 a 1 2002 1
3 a 1 2003 1
4 b 1 2003 2
5 b 1 2004 1
這就是我想要的:
id cars year csum
<chr> <dbl> <dbl> <dbl>
1 a 1 2001 2
2 a 1 2002 3
3 a 1 2003 4
4 b 1 2003 2
5 b 1 2004 3
非常感謝。
uj5u.com熱心網友回復:
dat %>% group_by(id) %>% count(cars,year) %>%
mutate(csum = cumsum(n)) %>% select(-c(cars,n))
# A tibble: 5 × 3
# Groups: id [2]
id year csum
<chr> <dbl> <int>
1 a 2001 2
2 a 2002 3
3 a 2003 4
4 b 2003 2
5 b 2004 3
uj5u.com熱心網友回復:
您需要的功能是aggregate,您可以這樣使用它:
aggregate(x=data$cars, #column on which you want to apply a function
by=list(id=data$id,year=data$year),#grouping variables
FUN=sum)#function to apply
uj5u.com熱心網友回復:
這行得通嗎?
data %>% group_by(id, year) %>% summarise(sum_cars = sum(cars)) %>%
group_by(id) %>% mutate(csum_cars = cumsum(sum_cars), .keep = 'unused')
輸出:
# Groups: id [2]
id year csum_cars
<fct> <dbl> <dbl>
1 a 2001 2
2 a 2002 3
3 a 2003 4
4 b 2003 2
5 b 2004 3
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/531256.html
標籤:rdplyr
上一篇:使用dplyr計算多點距離矩陣
