Используя data.table, где ваш фрейм данных называется df1
, сначала преобразуйте его в data.table, затем используйте функцию cumsum()
с помощью (и упорядочено, потому что я использовал keyby =
вместо by =
) страна.
library(data.table)
setDT(df1)
dt1[, cases_cumulative := cumsum(cases), keyby = countriesAndTerritories]
Data.tables основаны на базовой структуре данных c R data.frame, но предлагают улучшенную функциональность, эффективность и скорость. В аннотации data.table используется DT[i,j,by]
- что очень просто сделать поднабор или упорядочение на i
, затем выбрать или сделать j
сгруппированный by
.
В качестве альтернативы, используя tidyverse, используйте group_by()
и mutate()
:
library(tidyverse)
df1 %>%
group_by(countriesAndTerritories) %>%
mutate(cum_cases = cumsum(cases))