От нескольких до нескольких переменных в R - PullRequest
0 голосов
/ 09 октября 2018

при преобразовании длинных данных в широкие. Как предоставить несколько столбцов для аргумента timevar в форме

`reshape(DT, idvar="Cell", timevar = "n1", direction="wide")`

как в примере timevar=c("n1","n2"....)

DT<-data.table(Cell = c("A","A","B","B"), n1=c("x","y","y","a"), n2=c("t","x","x","z"))

   Cell n1 n2
1:    A  x  t
2:    A  y  x
3:    B  y  x
4:    B  a  z

, но мне нужен вывод, как показано ниже:

Cell  n1    n2  n3  n4
A      x    y   t   NA
B      x    y   a   z

порядок элементов в столбцах вывода n1, n2, n3 не имеет значения.требуются только уникальные элементы из столбцов n1 и n2.Также у меня есть несколько столбцов, таких как n1, n2, n3 ,,, n в моем фактическом DT

1 Ответ

0 голосов
/ 09 октября 2018

Вот грубая концепция, которая, кажется, достигает желаемого результата.

foo <- function(x, y, n) {
  l <- as.list(unique(c(x, y)))
  if (length(l) < n) l[(length(l)+1):n] <- NA_character_
  l
}


DT[, foo(n1, n2, 4), Cell]

#    Cell V1 V2 V3   V4
# 1:    A  x  y  t <NA>
# 2:    B  y  a  x    z

# Set the names by reference
setnames(DTw, c("Cell", paste0("n", 1:4)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...