如何在R语言数据框中按两行求和并重复填充新列
实现每两行求和并重复填充的R方案
这里提供两种实用方法来实现你的需求:
方法一:Base R 原生实现
无需额外安装包,直接用基础函数完成:
x1 <- c(0,1,1,1,1,0) df <- data.frame(x1) # 生成每2行一组的分组索引 groups <- rep(seq_len(nrow(df) %/% 2), each = 2) # 按组求和后重复填充到对应行 df$x2 <- rep(tapply(df$x1, groups, sum), each = 2)
执行后df的x2列会得到[1,1,2,2,1,1],完全符合需求。如果你的数据行数是奇数,只需将分组数改为ceiling(nrow(df)/2)即可兼容最后单独一行的情况。
方法二:Tidyverse 风格实现
如果你习惯用dplyr这类工具,可以用分组计算的方式:
library(dplyr) df <- df %>% # 创建分组标记:每2行一组 mutate(group = rep(row_number() %/% 2 + 1, each = 2, length.out = nrow(df))) %>% # 按分组计算求和值并填充到每行 group_by(group) %>% mutate(x2 = sum(x1)) %>% ungroup() %>% # 可选:移除临时分组列 select(-group)
这种方式代码可读性更强,适合后续扩展更复杂的数据框操作场景。
内容的提问来源于stack exchange,提问作者P Initiate
相关产品推荐
相关产品推荐

