You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R将数据框分段行转换为新列的分组标识

R语言实现分组标识添加方案

步骤1:构造/读取原始数据

先还原用户提供的原始数据结构(如果是从文件读取,可替换为read.table等函数,注意处理空值与行名):

# 模拟原始数据结构
raw_data <- data.frame(
  row_names = c("Section name", "activity_a", "activity_b", "activity_c", "activity_d", 
                "activity_e", "activity_f", "activity_g", "activity_h", "activity_i", 
                "Section name", "activity_j", "activity_k", "activity_l", "activity_m", 
                "activity_n", "activity_o"),
  F1 = c(NA, NA, 1, NA, 1, NA, NA, 3, 3, NA, NA, 2, 1, 1, 3, 3, 2),
  F2 = c(NA, NA, 2, 3, 3, NA, 3, NA, NA, NA, NA, NA, NA, 3, NA, NA, NA),
  F3 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 2, 2, NA),
  stringsAsFactors = FALSE
)
# 设置行名并删除辅助列
rownames(raw_data) <- raw_data$row_names
raw_data$row_names <- NULL

步骤2:生成分组标识

通过识别Section name分隔行,为对应行分配分组标签:

# 定位所有分隔行的位置
section_pos <- which(rownames(raw_data) == "Section name")

# 定义每个分组的行范围
group_ranges <- lapply(seq_along(section_pos), function(i) {
  start <- section_pos[i] + 1
  end <- ifelse(i < length(section_pos), section_pos[i+1] - 1, nrow(raw_data))
  start:end
})

# 为每行分配分组标识
raw_data$section <- NA
for (idx in seq_along(group_ranges)) {
  raw_data$section[group_ranges[[idx]]] <- paste0("Section name_", idx)
}

步骤3:清理并输出结果

移除原始分隔行,得到目标数据框:

# 删除分隔行
final_data <- raw_data[!rownames(raw_data) == "Section name", ]

# 查看结果(空值显示为空白)
print(final_data, na.print = "")

运行后即可得到符合要求的数据框,分组标识已正确添加到section列中。

内容的提问来源于stack exchange,提问作者Beto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 22:40:17