使用R将数据框两列内容合并为单列且不生成额外标识列
R实现多列合并为单列(无额外标识列)
你需要的效果是按行合并time1、time2的取值,保留对应id匹配关系,以下是两种常用实现方式:
方法1:基础R实现(无需加载第三方包)
# 构造原始数据 df <- structure(list(id = c(1, 1, 1), time1 = c(10, 20, 30), time2 = c(15, 25, 35)), row.names = c(NA, 3L), class = "data.frame") # 合并处理 result <- data.frame( id = rep(df$id, each = 2), # 每个id对应2个time值,按顺序重复 time = as.vector(t(df[, c("time1", "time2")])) # 按行提取time1、time2取值拼接 )
方法2:tidyverse实现(代码更简洁)
使用tidyr的pivot_longer函数,直接通过参数控制不生成额外列:
library(tidyr) result <- df %>% pivot_longer( cols = c(time1, time2), # 指定要合并的列 names_to = NULL, # 不生成存储原始列名的额外标识列 values_to = "time" # 合并后数值列的列名 )
两种方法输出的结构和你要求的完全一致,不存在多余的列。
内容的提问来源于stack exchange,提问作者kam
相关产品推荐
相关产品推荐

