在r中的多行中分发data.frame数据

问题描述 投票:1回答:1

我正在使用R 3.5.1

我认为这是一个简单的问题,但我不是很熟悉R.

我有一个看起来像这样的data.frame对象

COL1  COL2  COL3
A     blah  3
A     abc   4
A     def   42
B     xyz   10
B     aaa   3
C     pdq   19

我想将data.table转换为这样

COLA  COLACount  COLB  COLBCount  COLC COLCCount 
blah  3          xyz   10         pdq  19   
abc   4          aaa   3
def   42

我不知道从哪里开始(或称之为)。我考虑过做以下事情:

  • 获取COL1中的所有唯一值
  • 使用COL2和COL3的内容为COL1中的每个唯一值创建单独的data.table
  • 将每个data.table绑定到一个“宽”表中。

但我感觉可能有一个r包/方法简化了这个过程。

谢谢你的任何建议。

r data.table cbind
1个回答
0
投票
cbind.fill <- function(...){
    nm <- list(...)
    nm <- lapply(nm, as.matrix)
    n <- max(sapply(nm, nrow))
    do.call(cbind, lapply(nm, function (x)
        rbind(x, matrix(, n-nrow(x), ncol(x)))))
} #code from package rowr

do.call(cbind.fill, split(dt, dt$COL1))
© www.soinside.com 2019 - 2024. All rights reserved.