R 基于多列的匹配行合并两个数据帧

R 基于多列的匹配行合并两个数据帧,r,R,下面是我试图合并索赔人和unemp的两个数据集的摘要和结构,我可以在这里和 在dim(m)的输出中,结果数据帧中有0行。所有6960行应相互唯一匹配 为了验证这两个数据帧是否具有“County”、“Month”和“Year”三列的唯一组合,我在数据帧中对这些列进行了重新排序和重新排列,如下所示: a <- claimants[ order(claimants[,"County"], claimants[,"Month"], claimants[,"Year"]), ] b <- u

下面是我试图合并
索赔人
unemp
的两个数据集的摘要和结构,我可以在这里和

dim(m)
的输出中,结果数据帧中有0行。所有6960行应相互唯一匹配

为了验证这两个数据帧是否具有“County”、“Month”和“Year”三列的唯一组合,我在数据帧中对这些列进行了重新排序和重新排列,如下所示:

a <- claimants[ order(claimants[,"County"], claimants[,"Month"], claimants[,"Year"]), ]

b <- unemp[ order(unemp[,"County"], unemp[,"Month"], unemp[,"Year"]), ]

b[2:4] <- b[c(2,4,3)]
a[2:4] %in% b[2:4]
[1] TRUE TRUE TRUE

我遗漏了一些东西,不知道是什么,希望您能帮助我理解这一点,我知道我不必按三列重新排列行来运行
merge
R应该识别匹配的行并合并不匹配的列。

索赔人df的县都是大写的,unemp df用小写字母表示

我在读取数据时使用了选项(stringsAsFactors=FALSE)。有几条建议将X列放在这两个列中,它似乎没有什么用处

options(stringsAsFactors = FALSE)
claims <- read.csv("claims.csv",header=TRUE)
claims$X <- NULL
unemp <- read.csv("unemp.csv",header=TRUE)
unemp$X <- NULL
unemp$County <- toupper(unemp$County)

m <- inner_join(unemp, claims)
dim(m)

# [1] 6960    8
选项(stringsAsFactors=FALSE)

索赔索赔人df的县全部大写,unemp df的县全部小写

我在读取数据时使用了选项(stringsAsFactors=FALSE)。有几条建议将X列放在这两个列中,它似乎没有什么用处

options(stringsAsFactors = FALSE)
claims <- read.csv("claims.csv",header=TRUE)
claims$X <- NULL
unemp <- read.csv("unemp.csv",header=TRUE)
unemp$X <- NULL
unemp$County <- toupper(unemp$County)

m <- inner_join(unemp, claims)
dim(m)

# [1] 6960    8
选项(stringsAsFactors=FALSE)

阿拉米达索赔!=阿拉米达阿拉米达!=阿拉米达
> m <- inner_join(unemp[2:8], claimants[2:5])
Joining, by = c("County", "Year", "Month")
> dim(m)
[1] 0 8 
options(stringsAsFactors = FALSE)
claims <- read.csv("claims.csv",header=TRUE)
claims$X <- NULL
unemp <- read.csv("unemp.csv",header=TRUE)
unemp$X <- NULL
unemp$County <- toupper(unemp$County)

m <- inner_join(unemp, claims)
dim(m)

# [1] 6960    8