如何在R中将一列数据合并到另一列并生成对应新观测行
R数据框列转行合并实现方案
方法1:tidyverse 实现(代码更简洁)
# 加载依赖包 library(dplyr) # 构造原始测试数据集 df <- data.frame( id = c(1,1,2,2), type = c(1,2,1,2), days = c(10,3,2,6), type0 = c(10,5,6,8) ) # 数据处理 df_result <- bind_rows( # 保留原始type非0的观测行 df %>% select(id, type, days), # 生成type=0的新观测行 df %>% transmute(id = id, type = 0, days = type0) ) %>% # 若需要匹配示例输出的无排序逻辑可删除本行代码 arrange(id, type)
方法2:base R 实现(无需依赖第三方包)
# 构造原始测试数据集 df <- data.frame( id = c(1,1,2,2), type = c(1,2,1,2), days = c(10,3,2,6), type0 = c(10,5,6,8) ) # 生成type=0的子数据集 df_type0 <- data.frame( id = df$id, type = 0, days = df$type0 ) # 合并数据集 df_result <- rbind(df[, c("id", "type", "days")], df_type0) # 若需要匹配示例输出的无排序逻辑可删除本行代码 df_result <- df_result[order(df_result$id, df_result$type), ]
两种方法最终得到的数据集结构完全符合要求,若不需要调整行的展示顺序,删除对应排序代码即可。
内容的提问来源于stack exchange,提问作者xshbj
相关产品推荐
相关产品推荐

