如何为多类型DataFrame按season/daytype匹配添加n列(长度不同)
在R中按season和daytype匹配合并两个分组DataFrame
需求说明
现有两个分组DataFrame:
- 第一个DataFrame(记为
df1)包含type、season、daytype、SeasAV字段,每个season+daytype组合对应3条不同type的记录 - 第二个DataFrame(记为
df2)包含season、daytype、n字段,每个season+daytype对应唯一的n值
需要将df2中的n列按season和daytype匹配,填充到df1的对应记录中。
实现方法
方法1:使用dplyr的left_join
依赖tidyverse系列的dplyr包,是直观的tidy风格实现:
library(dplyr) # 按season和daytype匹配合并 result_df <- df1 %>% left_join(df2, by = c("season", "daytype"))
left_join会自动根据指定的两个键(season和daytype)匹配记录,将df2的n列添加到df1中,每个season+daytype组合对应的3条type记录都会填充对应的n值,同时保留原分组结构。
方法2:使用base R的merge函数
无需额外包,用base R原生函数即可实现:
# 按season和daytype匹配,保留df1所有记录 result_df <- merge(df1, df2, by = c("season", "daytype"), all.x = TRUE)
all.x = TRUE参数确保保留df1的全部记录,匹配后自动为符合条件的行填充n值,效果与dplyr方法一致。
内容的提问来源于stack exchange,提问作者Ryan Gary
相关产品推荐
相关产品推荐

