美文网首页
R语言之merge举例

R语言之merge举例

作者: Seurat_Satija | 来源:发表于2020-01-31 21:09 被阅读0次

merge(x, y, by = intersect(names(x), names(y)),by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all,sort = TRUE, suffixes = c(".x",".y"),incomparables = NULL, ...)

merge函数参数的说明:
x,y:用于合并的两个数据框
by,by.x,by.y:指定依据哪些行合并数据框,默认值为相同列名的列.
all,all.x,all.y:指定x和y的行是否应该全在输出文件.
sort:by指定的列是否要排序.
suffixes:指定除by外相同列名的后缀.
incomparables:指定by中哪些单元不进行合并.

w1=data.frame(name=c("A","B","A","A","C"),school=c(1,2,1,1,1),class=c("10","5","4","11","1"),ENGLISH=c(85,50,90,90,12))
> w1
  name school class ENGLISH
1    A      1    10      85
2    B      2     5      50
3    A      1     4      90
4    A      1    11      90
5    C      1     1      12
> w2=data.frame(name=c("A","B","C"),school=c(3,2,1),class=c("5","5","1"),MATHS    =c(80,89,55), ENGLISH=c(85,50,90,90,12))
Error in data.frame(name = c("A", "B", "C"), school = c(3, 2, 1), class = c("5",  : 
  参数值意味着不同的行数: 3, 5
> w2=data.frame(name=c("A","B","C"),school=c(3,2,1),class=c("5","5","1"),MATHS    =c(80,89,55), ENGLISH=c(88,81,32))
> w2
  name school class MATHS ENGLISH
1    A      3     5    80      88
2    B      2     5    89      81
3    C      1     1    55      32
> merge(w1, w2, all = T)
  name school class ENGLISH MATHS
1    A      1    10      85    NA
2    A      1    11      90    NA
3    A      1     4      90    NA
4    A      3     5      88    80
5    B      2     5      50    NA
6    B      2     5      81    89
7    C      1     1      12    NA
8    C      1     1      32    55
> merge(w1, w2, by = c("NAME", "SCHOOL", "CLASS"), all = T)
Error in fix.by(by.x, x) : 'by'必需指定唯一有效的列
> merge(w1, w2, by = c("name", "school", "class"), all = T)
  name school class ENGLISH.x MATHS ENGLISH.y
1    A      1    10        85    NA        NA
2    A      1    11        90    NA        NA
3    A      1     4        90    NA        NA
4    A      3     5        NA    80        88
5    B      2     5        50    89        81
6    C      1     1        12    55        32
> merge(w1, w2, all = T, by = "name", incomparables = "A")
  name school.x class.x ENGLISH.x school.y class.y MATHS ENGLISH.y
1    A        1      10        85       NA    <NA>    NA        NA
2    A        1       4        90       NA    <NA>    NA        NA
3    A        1      11        90       NA    <NA>    NA        NA
4    A       NA    <NA>        NA        3       5    80        88
5    B        2       5        50        2       5    89        81
6    C        1       1        12        1       1    55        32
> 

相关文章

网友评论

      本文标题:R语言之merge举例

      本文链接:https://www.haomeiwen.com/subject/khrnthtx.html