相互堆叠行

时间:2019-01-16 21:29:36

标签: r dataframe stack rows

我的数据集如下

"compilerOptions": {
  "lib": ["esnext.asynciterable"]
}

我希望将行彼此堆叠,以便最终产品看起来像这样

Col1 Col2 Col3
 AA   BB   NA
 DD   EE   NA
 FF   NA   GG

我真的很难找到一种简单的方法来做到这一点。任何帮助都会很棒!

1 个答案:

答案 0 :(得分:1)

我们可以做到

data.frame(col1 = na.omit(c(t(dat))), stringsAsFactors = FALSE)
#  col1
#1   AA
#2   BB
#3   DD
#4   EE
#5   FF
#6   GG

我们首先使用t()转置您的数据,该数据返回一个矩阵,然后调用c()获取向量,使用NA删除na.omit s,最后使用data.frame()

数据

dat <- structure(list(Col1 = c("AA", "DD", "FF"), Col2 = c("BB", "EE", 
NA), Col3 = c(NA, NA, "GG")), .Names = c("Col1", "Col2", "Col3"
), class = "data.frame", row.names = c(NA, -3L))