zoukankan      html  css  js  c++  java
  • R语言合并data.frame

    Merging Data

    Adding Columns

    To merge two data frames (datasets) horizontally,  use the merge function. In most cases, you join two data frames  by one or more common key variables (i.e., an inner join).

    # merge two data frames by ID  

    total <- merge(data frameA,data frameB,by="ID") #by指定的列中的值必须是唯一的,不能重复出现两行有相同的ID

    # merge two data frames by ID and Country  

    total <- merge(data frameA,data frameB,by=c("ID","Country")) #by指定的列中的值必须是唯一的,不能重复出现两行有相同的ID

    Inner join: merge(df1, df2) will work for these examples because R automatically joins the frames by common variable names, but you would most likely want to specify merge(df1, df2, by="CustomerId") to make sure that you were matching on only the fields you desired.  You can also use the by.x and by.y parameters if the matching variables have different names in the different data frames.

    Outer join: merge(x = df1, y = df2, by = "CustomerId", all = TRUE) #by指定的列中的值必须是唯一的,不能重复出现两行有相同的ID

    Left outer: merge(x = df1, y = df2, by = "CustomerId", all.x=TRUE) #by指定的列中的值必须是唯一的,不能重复出现两行有相同的ID

    Right outer: merge(x = df1, y = df2, by = "CustomerId", all.y=TRUE) #by指定的列中的值必须是唯一的,不能重复出现两行有相同的ID

    Cross join: merge(x = df1, y = df2, by = NULL) #by指定的列中的值必须是唯一的,不能重复出现两行有相同的ID

    #########################

    > df2 = data.frame(CustomerId=c(2,4,6),State=c(rep("Alabama",2),rep("Ohio",1)))

    > df1  

    CustomerId Product

    1          1 Toaster

    2          2 Toaster

    3          3 Toaster

    4          4   Radio

    5          5   Radio

    6          6   Radio

    > df2  

    CustomerId   State

    1          2 Alabama

    2          4 Alabama

    3          6    Ohio

    > merge(df1, df2, all=TRUE)  

    CustomerId Product   State

    1          1 Toaster    <NA>

    2          2 Toaster Alabama

    3          3 Toaster    <NA>

    4          4   Radio Alabama

    5          5   Radio    <NA>

    6          6   Radio    Ohio

    > merge(df1, df2, all.x=TRUE)  

    CustomerId Product   State

    1          1 Toaster    <NA>

    2          2 Toaster Alabama

    3          3 Toaster    <NA>

    4          4   Radio Alabama

    5          5   Radio    <NA>

    6          6   Radio    Ohio

    > merge(df1, df2, all.y=TRUE)  

    CustomerId Product   State

    1          2 Toaster Alabama

    2          4   Radio Alabama

    3          6   Radio    Ohio

    #####################################

     de <- merge(d, e, by=0, all=TRUE) # merge by row names (by=0 or by="row.names")

    REF:

    http://stat.ethz.ch/R-manual/R-devel/library/base/html/merge.html

    http://www.statmethods.net/management/merging.html

    http://stackoverflow.com/questions/1299871/how-to-join-data-frames-in-r-inner-outer-left-right

    http://blog.sciencenet.cn/blog-508298-652589.html

  • 相关阅读:
    Vue根据URL传参来控制全局 console.log 的开关
    原来你是这样的毛玻璃
    CSS3边框会动的信封
    判断当前系统当前浏览器是否安装启用 Adobe Flash Player,检查在chrome中的状态
    随笔一个正则
    PHP实现栈数据结构
    php实现一个单链表
    php中按值传递和按引用传递的一个问题
    利用shell脚本或者php移动某个文件夹下的文件到各自的日期组成的目录下
    php中DateTime、diff
  • 原文地址:https://www.cnblogs.com/emanlee/p/4435900.html
Copyright © 2011-2022 走看看