在R语言中按单元格逗号分隔值拆分并复制指定行的方法
解决方案:拆分多值单元格并展开行
直接使用tidyr包的separate_rows()函数就能高效完成需求,无需循环,代码如下:
library(dplyr) library(tidyr) # 原始数据集 DF <- tibble(id = seq(1:4), label = c("A", "B", "C", "D"), val = c(NA, "5, 10", "20", "6, 7, 8")) # 核心处理步骤 result <- DF %>% separate_rows(val, sep = ", ", convert = FALSE) # 查看结果 result
执行后输出和预期完全一致:
# A tibble: 7 × 3 id label val <int> <chr> <chr> 1 1 A NA 2 2 B 5 3 2 B 10 4 3 C 20 5 4 D 6 6 4 D 7 7 4 D 8
关键参数说明
sep = ", ":指定拆分的分隔符是逗号加空格,匹配数据格式,避免拆分后出现多余空格。convert = FALSE:保持val列的字符类型;如果需要将val转为数值型,改成convert = TRUE即可。- 函数会自动识别需拆分的行:不含逗号的行、NA行均保持原样,含逗号的行自动按值的数量复制并拆分。
内容的提问来源于stack exchange,提问作者kiwi
相关产品推荐
相关产品推荐

