我有一个名为EXAMPLE的数据框架,有4个变量:
date <- c(2010, 2011, 2012, 2013)
new_york <- c(10,20,22,28)
berlin <- c(0,51,45,12)
tokyo <- c(2,15,20,13)
EXAMPLE <- data.frame(date, new_york, berlin, tokyo)
我想在每一列中确定哪个位置的总和至少为50,并存储该总和。例如,在第3行的new_york列中,总计52。
我在想下面这样的事情,但没有奏效:
x <- 1
while(sum(EXAMPLE$berlin[1:x]) <= 50) {
a <-x
}
如果有人能帮忙,我很感激。
out <- lapply(EXAMPLE[,-1], cumsum)
names(out) <- paste0(names(out), "_cumulative")
options(width=123, length=99999)
cbind(EXAMPLE, out)
# date new_york berlin tokyo new_york_cumulative berlin_cumulative tokyo_cumulative
# 1 2010 10 0 2 10 0 2
# 2 2011 20 51 15 30 51 17
# 3 2012 22 45 20 52 96 37
# 4 2013 28 12 13 80 108 50
这是@r2evans答案的等效tidy
版本。。。
library(dplyr)
EXAMPLE %>%
mutate(across(new_york:tokyo,
cumsum,
.names = "cumsum_{.col}")
)
#> date new_york berlin tokyo cumsum_new_york cumsum_berlin cumsum_tokyo
#> 1 2010 10 0 2 10 0 2
#> 2 2011 20 51 15 30 51 17
#> 3 2012 22 45 20 52 96 37
#> 4 2013 28 12 13 80 108 50