如何创建滞后列?创建时遇行数不匹配错误求解决
解决创建滞后列时的长度不匹配错误
错误原因很明确:你执行ML$AML1<-c(NA,ML$AML)时,c(NA, ML$AML)会生成11个元素(1个NA加上原列的10个值),但你的数据框ML只有10行,数据框列的长度必须和行数一致,所以触发了长度不匹配的报错。
下面提供两种可行的解决方法:
基础R实现
通过截取原列的前n-1个元素,和NA拼接后长度刚好匹配数据框行数:
# 方法1:用head函数截取前9个元素(10-1) ML$AML1 <- c(NA, head(ML$AML, -1)) # 方法2:去掉原列最后一个元素 ML$AML1 <- c(NA, ML$AML[-length(ML$AML)])
用dplyr包简化操作
dplyr的lag()函数专门用来生成滞后列,自动处理长度匹配问题,代码更简洁:
library(dplyr) ML <- ML %>% mutate(AML1 = lag(AML))
内容的提问来源于stack exchange,提问作者user19736001
相关产品推荐
相关产品推荐

