Распределение данных data.frame по нескольким строкам в r - PullRequest
0 голосов
/ 05 сентября 2018

Я использую 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

Я хочу преобразовать таблицу данных, чтобы она выглядела так

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

Я не уверен, с чего начать (или как это назвать). Я подумал сделать следующее:

  • получить все уникальные значения в COL1
  • создать отдельную таблицу данных для каждого уникального значения в COL1, используя содержимое COL2 и COL3
  • cbind каждого data.table в одну "широкую" таблицу.

Но у меня есть ощущение, что может быть пакет / метод r, который упрощает эту процедуру.

Спасибо за любые предложения.

1 Ответ

0 голосов
/ 05 сентября 2018
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))
...