R中的长到宽多个变量
Long to Wide Multiple variables in R
在将长数据转换为宽数据时如何在重塑中为 timevar argumnet 提供多列
`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 cols 的唯一元素。我的实际 DT
中还有多个列,如 n1、n2、n3、、、n
这是一个粗略的概念,似乎可以达到预期的效果。
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)))
在将长数据转换为宽数据时如何在重塑中为 timevar argumnet 提供多列
`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 cols 的唯一元素。我的实际 DT
中还有多个列,如 n1、n2、n3、、、n这是一个粗略的概念,似乎可以达到预期的效果。
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)))