每组重新安排一张桌子

Flo*_*oni 5 aggregate r

我和R合作,我有这些数据:

   data <- structure(list(Col1 = 1:9, Col2 = structure(c(2L, 2L, 2L, 1L, 
3L, 3L, 3L, 3L, 3L), .Label = c("Administrative ", "National", 
"Regional"), class = "factor"), Col3 = structure(c(NA, 3L, 4L, 
NA, 2L, 3L, 1L, 4L, 3L), .Label = c("bike", "boat", "car", "truck"
), class = "factor"), Col4 = c(56L, 65L, 58L, 62L, 24L, 25L, 
120L, 89L, 468L), X = c(NA, NA, NA, NA, NA, NA, NA, NA, NA), 
    X.1 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA)), .Names = c("Col1", 
"Col2", "Col3", "Col4", "X", "X.1"), class = "data.frame", row.names = c(NA, 
-9L))
Run Code Online (Sandbox Code Playgroud)

我想重新安排它以查看可用或不可用的内容.输出看起来像这样:

    result <- structure(list(Col1 = c(1L, 4L, 5L), Col2 = structure(c(2L, 1L, 
3L), .Label = c("Administrative ", "National", "Regional"), class = "factor"), 
    car = c(1L, 0L, 1L), truck = c(1L, 0L, 1L), boat = c(0L, 
    0L, 1L), bike = c(0L, 0L, 1L)), .Names = c("Col1", "Col2", 
"car", "truck", "boat", "bike"), class = "data.frame", row.names = c(NA, 
-3L))
Run Code Online (Sandbox Code Playgroud)

我已尝试使用聚合但我仍远未达到结果.帮助就是

t <- aggregate(data$Col2, by=list(data$Col3), c)
Run Code Online (Sandbox Code Playgroud)

欢迎帮助!

akr*_*run 4

我们可以使用dcastfromdata.table和lengthasfun.aggregate

library(data.table)
dcast(setDT(data), Col2~ Col3, length)[, 1:5, with = FALSE]
Run Code Online (Sandbox Code Playgroud)