如何用R语言实现数据集匹配转换(替代Excel手动操作)
R语言实现数据转换解决方案
可以通过dplyr包完成这个自动化处理,步骤如下:
1. 构造示例数据集
先把你提供的两个数据集转换成R的数据框:
# 数据集1 df1 <- data.frame( Col1 = c("a", "a", "a", "b", "b", "b", "a", "a", "b", "b"), Col2 = c("1", "2", "3", "4", "5", "6", "77", "88", "99", "00"), stringsAsFactors = FALSE ) # 数据集2 df2 <- data.frame( Col1 = c("a", "a", "a", "b", "b", "b"), Col2 = c("1", "2", "3", "4", "5", "6"), Col3 = c("X", "X", "Y", "Y", "Z", "Z"), stringsAsFactors = FALSE )
2. 拆分处理并合并结果
我们需要把目标数据集拆成两部分处理后再合并:
- 第一部分:提取数据集2中
Col1和Col3的唯一组合,重命名Col3为NewCol2 - 第二部分:筛选数据集1中未出现在数据集2
Col2里的行,将原Col2重命名为NewCol2
使用dplyr的代码如下:
library(dplyr) # 处理第一部分:去重提取Col1-Col3组合 part1 <- df2 %>% select(Col1, NewCol2 = Col3) %>% distinct() # 处理第二部分:筛选未匹配的行 part2 <- df1 %>% filter(!Col2 %in% df2$Col2) %>% select(Col1, NewCol2 = Col2) # 合并两部分得到最终结果 target_df <- bind_rows(part1, part2)
3. 验证结果
运行上述代码后,target_df就是你需要的目标数据集:
print(target_df) # Col1 NewCol2 # 1 a X # 2 a Y # 3 b Y # 4 b Z # 5 a 77 # 6 a 88 # 7 b 99 # 8 b 00
内容的提问来源于stack exchange,提问作者Sundew
相关产品推荐
相关产品推荐

