如何按列中的逗号将DataFrame拆分为更多行?
拆分DataFrame中带逗号的列并重复对应行
原始数据
先定义你的初始DataFrame:
dt1 <- structure(list(Variable = c("Apple", "Orange"), Value = c("12, 5", "15")), class = "data.frame", row.names = c(NA, -2L))
解决方案
方法一:使用tidyverse工具(简洁高效)
借助tidyverse中的separate_rows函数,可直接拆分指定列并自动重复其他列的对应行:
# 加载包 library(tidyverse) # 拆分并转换数据类型 dt2 <- dt1 %>% separate_rows(Value, sep = ", ") %>% # 按", "拆分Value列并展开行 mutate(Value = as.integer(Value)) # 将Value转为整数类型
验证结果:
dput(dt2) # 输出: # structure(list(Variable = c("Apple", "Apple", "Orange"), Value = c(12L, # 5L, 15L)), class = "data.frame", row.names = c(NA, -3L))
方法二:Base R实现(无需额外包)
如果不想加载第三方包,可通过基础函数完成需求:
# 拆分Value列得到列表 split_vals <- strsplit(dt1$Value, ", ") # 根据拆分后的元素数量重复Variable列 var_col <- rep(dt1$Variable, sapply(split_vals, length)) # 拆分后的值转为整数向量 val_col <- as.integer(unlist(split_vals)) # 组合成目标DataFrame dt2_base <- data.frame(Variable = var_col, Value = val_col)
内容的提问来源于stack exchange,提问作者Jamie
相关产品推荐
相关产品推荐

