r-循环来识别一个和,然后得到那个和的位置



我有一个名为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

相关内容

最新更新