R将一行多个列中的变量分隔成多行

  • 本文关键字:变量 分隔 一行 r dataframe
  • 更新时间 :
  • 英文 :


我有一个563列的数据框架。

每列当前有一行包含多个不同长度的值。

例如:

col_1            col_2               col_3       ...   col_563  
c("1","2","3")   c("1","2","3"...)   c("1","2")        c("1","2","3"...)

我想把列中的值分成多行:

col_1     col_2   col_3   ...   col_563  
"1"       "1"     "1"           "1"
"2"       "2"     "2"           "2"
"3"       "3"                   "3"
"4"                   "4" 
"5"

I have try:

separate_rows(df, "row1":"row563", convert = TRUE)

但是我得到了错误:

Error in `fn()`:
! In row 1, can't recycle input of size 778 to size 124.

有谁知道我应该怎么做吗?

In Base R:

a <- unlist(df, FALSE)
data.frame(lapply(a, `length<-`, max(lengths(a))))
col_1 col_2 col3 col_5
1     1     1    1     1
2     2     2    2     2
3     3     3   NA     3
4    NA     4   NA     4
5    NA     5   NA    NA

你可以这样做:

library(tidyverse)
flatten(df) %>%
map_dfc(`length<-`, max(length(.)))
# A tibble: 4 x 4
col_1 col_2  col3 col_5
<int> <int> <int> <int>
1     1     1     1     1
2     2     2     2     2
3     3     3    NA     3
4    NA     4    NA     4

,其中数据看起来如下:

df <- structure(list(col_1 = list(1:3), col_2 = list(1:5), col3 = list(
1:2), col_5 = list(1:4)), row.names = c(NA, -1L), class = "data.frame")

最新更新