在 r 中跨多行分布 data.frame 数据
distributing data.frame data across multiple rows in r
我正在使用 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
- c将每个 data.table 绑定成一个 "wide" table.
但我感觉可能有一个 r package/method 可以简化这个过程。
感谢您的任何建议。
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))
我正在使用 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
- c将每个 data.table 绑定成一个 "wide" table.
但我感觉可能有一个 r package/method 可以简化这个过程。
感谢您的任何建议。
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))