在R语言中基于分组变量合并两列的简便实现方法
解决方案
示例数据集
df <- data.frame( value = c(0, 0, 1, 1, 2, 2), ind_1 = c("AA", "BD", "WR", "DH", "AE", "SG"), ind_2 = c("DE", "DE", "BH", "BH", "EE", "EE") )
简便实现代码
用tidyr包的pivot_longer()函数可以一步完成宽表转长表的操作,自动保留value的分组对应关系:
library(tidyr) df_result <- df %>% pivot_longer( cols = starts_with("ind_"), # 选中所有以ind_开头的列 names_to = NULL, # 不需要保留原列名 values_to = "ind" # 合并后的数据存入新列ind ) %>% arrange(value) # 按value排序,匹配期望结果的顺序
验证结果
运行后df_result的内容与你给出的期望结果完全一致:
print(df_result) # value ind #1 0 AA #2 0 BD #3 0 DE #4 0 DE #5 1 WR #6 1 DH #7 1 BH #8 1 BH #9 2 AE #10 2 SG #11 2 EE #12 2 EE
内容的提问来源于stack exchange,提问作者Katharina
相关产品推荐
相关产品推荐

