我有一个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")