长到宽R中的多个变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了长到宽R中的多个变量相关的知识,希望对你有一定的参考价值。

将Long数据转换为wide时如何在reshape中为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 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)))

以上是关于长到宽R中的多个变量的主要内容,如果未能解决你的问题,请参考以下文章

熊猫从长到宽重塑,由两个变量

athena presto - 从长到宽的多列

从长到宽重塑并创建具有二进制值的列

Redshift SQL - 高/长到宽格式

python 在Pandas中转置数据(长到宽)

tidyR 从长到宽的数据?