获取值位置的函数

  • 本文关键字:函数 位置 获取 r
  • 更新时间 :
  • 英文 :


从这些数据中,我想要一个新列(" From "),其中每一行累积值的第一个值。它实际上应该是列"cum"的最后一个值+ 1。用函数怎么做呢?假设有很多行

a <- c(5,5,4,3)
cum <- cumsum(a)
df <- data.frame(a,cum)
df
a cum 
5   5  
5  10  
4  14 
3  17  
df$from <- c(1,6,11,15)
df
a cum from
5   5    1
5  10    6
4  14   11
3  17   15

一个可能的解决方案是使用lag(),然后使用head()来删除创建的向量

的最后一个元素
df$from <- head(c(1, lag(df$cum + 1)), -1)
df
#   a cum from
# 1 5   5    1
# 2 5  10    6
# 3 4  14   11
# 4 3  17   15
library(tidyverse) 
a <- c(5,5,4,3)
cum <- cumsum(a)
df <- data.frame(a,cum)
df %>% 
mutate(from = lag(cum, default = 0) + 1)
#>   a cum from
#> 1 5   5    1
#> 2 5  10    6
#> 3 4  14   11
#> 4 3  17   15

由reprex包(v1.0.0)创建于20121-03-01

基本R选项

transform(
df,
from = c(1, head(cum, -1) + 1)
)

a cum from
1 5   5    1
2 5  10    6
3 4  14   11
4 3  17   15

最新更新