如何在R语言中新增列存储上一行对应列的数值?
在R语言中生成上一行数值列的实现方法
首先构造示例数据框,方便你直接测试:
df <- data.frame( x = 1:5, y = c(0.2, 7.1, 2.4, 1.1, 6.0), z = c("yes", "no", "no", "yes", "no") )
方法一:基础R实现
直接通过向量索引拼接的方式生成新列,无需额外安装包:
# 生成last.y列:第一行为NA,后续行取y列的上一行值 df$last.y <- c(NA, df$y[-nrow(df)]) # 生成last.z列:逻辑与last.y一致 df$last.z <- c(NA, df$z[-nrow(df)])
方法二:tidyverse(dplyr)实现
如果习惯使用tidyverse生态,用lag()函数语法更直观:
# 首次使用需安装包 install.packages("dplyr") # 加载dplyr library(dplyr) # 新增目标列 df <- df %>% mutate( last.y = lag(y), last.z = lag(z) )
lag()函数默认将第一行设为NA,后续行自动提取对应列的上一行数值,代码更简洁易读。
内容的提问来源于stack exchange,提问作者rjuri
相关产品推荐
相关产品推荐

