簡體   English   中英

R將一行多列中的變量分成多行

[英]R separate variables in one row of multiple columns into multiple rows

我有一個包含 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"

我努力了:

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

但我得到了錯誤:

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

有誰知道我應該如何進行?

在基礎 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")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM