R语言实现DataFrame列偏移:等效pandas shift功能的方法
R实现列偏移(滞后)的等效方案
单阶偏移列实现
R的dplyr包中提供的lag()函数完全等效于pandas的shift()方法,默认偏移1位时首行自动填充NA,匹配你给出的需求:
library(tidyverse) # 示例数据 df <- tibble(x = c(1,2,3), y = c(4,5,6)) # 新增偏移1位的x列 df <- df %>% mutate(shifted_x = lag(x, n = 1))
运行后得到的结果和你示例的输出完全一致。
批量生成多阶滞后特征
如果你需要对指定列生成1到10阶的历史滞后特征(对应你给出的Python循环代码),可以用以下两种常用实现方式:
方式1:dplyr原生语法(版本1.0.0及以上支持,写法最简洁)
# 对sepal_length列生成1~10阶滞后特征,列名对应为feature_1到feature_10 df <- df %>% mutate( across(sepal_length, .fns = set_names(1:10, paste0("feature_", 1:10)), .names = "{.fn}" ) )
方式2:结合purrr循环实现(兼容性更强)
# 批量生成1~10阶滞后特征列 lag_features <- purrr::map_dfc(1:10, ~lag(df$sepal_length, n = .x)) %>% purrr::set_names(paste0("feature_", 1:10)) # 将特征列合并到原数据框 df <- dplyr::bind_cols(df, lag_features)
如果需要实现向上偏移(取未来值作为特征),替换lag()为lead()函数即可,参数用法完全一致。
内容的提问来源于stack exchange,提问作者Norhther
相关产品推荐
相关产品推荐

