【问题标题】:In R data table how do you subset and count?在 R 数据表中,你如何子集和计数?
【发布时间】:2018-04-12 13:47:27
【问题描述】:

我有一组类似的数据

a = data.table(
  ID = c(1, 1, 2, 2, 2, 3, 3),
  TOUR = c("USA", "CHINA", "CHINA", "CHINA", "EUROPE", "CANADA", "USA")
)

我想汇总数据来创建这个:

使用数据表.....谁能告诉我怎么做?

谢谢你,菲尔,

【问题讨论】:

    标签: r datatable aggregation


    【解决方案1】:

    我们可以首先使用.N(即行数)创建按“ID”分组的“NUMBER_OF_BOOKINGS”,然后使用fun.aggregate aslength 创建dcast`

    dcast(a[, NUMBER_OF_BOOKINGS := .N, ID], ID + NUMBER_OF_BOOKINGS ~ TOUR, length)
    #    ID NUMBER_OF_BOOKINGS CANADA CHINA EUROPE USA
    #1:  1                  2      0     1      0   1
    #2:  2                  3      0     2      1   0
    #3:  3                  2      1     0      0   1
    

    如果我们需要前缀"TOUR",请使用paste

    dcast(a[, NUMBER_OF_BOOKINGS := .N, ID], ID + NUMBER_OF_BOOKINGS ~ 
                        paste0("TOUR_", TOUR), length)
    

    上述方法还会在我们分配的原始数据集中创建一个列 (:=)。如果我们想避免这种情况,我们可以加入

    a[, .(NUMBER_OF_BOOKINGS = .N), ID][dcast(a, ID ~ paste0("TOUR_", TOUR), length), on = .(ID)]
    #   ID NUMBER_OF_BOOKINGS TOUR_CANADA TOUR_CHINA TOUR_EUROPE TOUR_USA
    #1:  1                  2           0          1           0        1
    #2:  2                  3           0          2           1        0
    #3:  3                  2           1          0           0        1
    

    【讨论】:

    • 谢谢。菲尔,
    猜你喜欢
    • 2021-10-04
    • 2018-03-04
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    • 2021-07-12
    • 2018-02-17
    相关资源
    最近更新 更多