当我在R中对多个数据帧进行完全联接时,如何从标题中删除.x.x.x.和.y.y

  • 本文关键字:标题 删除 数据帧 r
  • 更新时间 :
  • 英文 :


file1

>
国家 名称 种族

我们可以使用plyr::join_all

plyr::join_all(df_list, type = "full")

-输出

Country Name Race  A  B  C  D  E  F  G  H  I
1      Rf  wef  wed  1  1  1 NA NA NA NA NA NA
2      Ew eggw   qw  2  2  2 NA NA NA  4 11  8
3      Gw  wef  wed NA NA NA  3  5  7 NA NA NA
4      Wd eggw   qw NA NA NA  4  6  8 NA NA NA
5      Qp  wef  wed NA NA NA NA NA NA  3 10  7

数据

df_list <- list(structure(list(Country = c("Rf", "Ew"), Name = c("wef", 
"eggw"), Race = c("wed", "qw"), A = 1:2, B = 1:2, C = 1:2), class = "data.frame", row.names = c(NA, 
-2L)), structure(list(Country = c("Gw", "Wd"), Name = c("wef", 
"eggw"), Race = c("wed", "qw"), D = 3:4, E = 5:6, F = 7:8), row.names = c(NA, 
-2L), class = "data.frame"), structure(list(Country = c("Qp", 
"Ew"), Name = c("wef", "eggw"), Race = c("wed", "qw"), G = 3:4, 
H = 10:11, I = 7:8), row.names = c(NA, -2L), class = "data.frame"))

full_join()有一个参数suffix,可以将其设置为空字符串来实现这一点。

data <-df.list %>% reduce(full_join, by=c("Country", "Name", "Race"), suffix=c("",""))

加入数据帧列表的基本R备选方案。

示例

df_list
[[1]]
Country Name Race A B C
1      Rf  wef  wed 1 1 1
2      Ew eggw   qw 2 2 2
[[2]]
Country Name Race D E F
1      Gw  wef  wed 3 5 7
2      Wd eggw   qw 4 6 8
[[3]]
Country Name Race G  H I
1      Qp  wef  wed 3 10 7
2      Ew eggw   qw 4 11 8

功能

join_list <- function(x, ax = T, ay = F){ 
dff <- merge(x[[1]], x[[2]], all.x=ax, all.y=ay)
if(length(x) > 2){
for(i in seq_along(x)[3:length(x)]){ 
dff <- merge(dff, x[[i]], all.x=ax, all.y=ay) 
}}; dff }

使用

join_list(df_list, ax=T, ay=T)
Country Name Race  A  B  C  D  E  F  G  H  I
1      Ew eggw   qw  2  2  2 NA NA NA  4 11  8
2      Gw  wef  wed NA NA NA  3  5  7 NA NA NA
3      Qp  wef  wed NA NA NA NA NA NA  3 10  7
4      Rf  wef  wed  1  1  1 NA NA NA NA NA NA
5      Wd eggw   qw NA NA NA  4  6  8 NA NA NA

数据

df_list <- list(structure(list(Country = c("Rf", "Ew"), Name = c("wef",
"eggw"), Race = c("wed", "qw"), A = 1:2, B = 1:2, C = 1:2), class = "data.frame", row.names = c(NA,
-2L)), structure(list(Country = c("Gw", "Wd"), Name = c("wef",
"eggw"), Race = c("wed", "qw"), D = 3:4, E = 5:6, F = 7:8), row.names = c(NA,
-2L), class = "data.frame"), structure(list(Country = c("Qp",
"Ew"), Name = c("wef", "eggw"), Race = c("wed", "qw"), G = 3:4,
H = 10:11, I = 7:8), row.names = c(NA, -2L), class = "data.frame"))

最新更新