R语言表格处理:拆分多值列并复制对应分数
解决方案
先模拟你的原始数据结构(方便直接测试代码):
df <- data.frame( V1 = c("A", "B", "C"), V2 = c(90, 85, 88), V3 = c("X,Y,Z", "M,N", "P") )
方法一:使用tidyverse工具包(推荐)
tidyverse里的tidyr::unnest_longer()可以直接拆分多值列并展开行,同时保留对应其他列的内容:
library(tidyverse) # 按逗号拆分V3为列表,再展开成多行 result_df <- df %>% mutate(V3 = str_split(V3, ",")) %>% unnest_longer(V3)
运行后得到的拆分结果:
# A tibble: 6 × 3 V1 V2 V3 <chr> <dbl> <chr> 1 A 90 X 2 A 90 Y 3 A 90 Z 4 B 85 M 5 B 85 N 6 C 88 P
方法二:使用Base R实现(无需额外安装包)
如果不想依赖第三方包,用Base R也能完成:
# 拆分V3列,计算每行需要重复的次数 split_v3 <- strsplit(df$V3, ",") row_indices <- rep(seq(nrow(df)), sapply(split_v3, length)) # 构造最终结果数据框 result_df_base <- data.frame( V1 = df$V1[row_indices], V2 = df$V2[row_indices], V3 = unlist(split_v3) )
内容的提问来源于stack exchange,提问作者marsupilami
相关产品推荐
相关产品推荐

