【问题标题】:Add data from a data table to another using values of a column使用列的值将数据从数据表添加到另一个
【发布时间】:2017-08-05 12:30:58
【问题描述】:

我知道这个问题令人困惑,但我希望这个例子能让它变得简单。

我有两张桌子:

x    y
1    23
2    34
3    76
4    31

&

x    y
1    78
3    51
5    54

我需要根据 x 值添加 y 列。我可以使用循环来做到这一点,但不想这样做。如果解决方案使用我最熟悉的basedplyrdata.table 函数会更好,我也可以使用apply 系列函数。输出应如下所示:

x    y
1    101
2    34
3    127
4    31
5    54

【问题讨论】:

    标签: r dataframe data.table dplyr apply


    【解决方案1】:

    基本思想是结合两个数据集,按x 分组并总结ysum,有几种方法可以做到:

    data.table:

    rbind(dtt1, dtt2)[, .(y = sum(y)), by = x]
    
    #    x   y
    # 1: 1 101
    # 2: 2  34
    # 3: 3 127
    # 4: 4  31
    # 5: 5  54
    

    基础 R aggregate:

    aggregate(y ~ x, rbind(dtt1, dtt2), FUN = sum)
    

    dplyr:

    rbind(dtt1, dtt2) %>% group_by(x) %>% summarize(y = sum(y))
    

    数据:

    library(data.table)
    
    dtt1 <- fread('x    y
    1    23
    2    34
    3    76
    4    31')
    
    dtt2 <- fread('x    y
    1    78
    3    51
    5    54')
    

    【讨论】:

    • 必须按 2 列分组,所以,它不起作用。但是我通过使用您的方法的轻微变化来规避它。所以,它确实有帮助。谢谢。
    猜你喜欢
    • 2010-11-22
    • 2016-09-22
    • 1970-01-01
    • 2014-05-17
    • 1970-01-01
    • 1970-01-01
    • 2013-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多