R 将大型数据集拆分为组

R 将大型数据集拆分为组,r,R,我的数据集有2列和300000行,其中包含1800个组,我想按这些组拆分数据集并cbind它们 这些组可能有不同的长度 范例 X<-data.frame(Dev=c("a","b","a","d","a"), value=(1,2,3,4,7)) Split<-split(X,f=X$Dev) X从整个列表中获取最大行数,并为长度较短的列表追加NA n <- 1:max(sap

我的数据集有2列和300000行,其中包含1800个组,我想按这些组拆分数据集并cbind它们

这些组可能有不同的长度

范例

X<-data.frame(Dev=c("a","b","a","d","a"), value=(1,2,3,4,7))
Split<-split(X,f=X$Dev)

X从整个列表中获取最大行数,并为长度较短的列表追加
NA

n <- 1:max(sapply(Split, nrow))
result <- do.call(cbind, lapply(Split, `[`, n, ))
result

#  a.Dev a.value b.Dev b.value d.Dev d.value
#1     a       1     b       2     d       4
#3     a       3  <NA>      NA  <NA>      NA
#5     a       7  <NA>      NA  <NA>      NA

n如果您的预期结果是一个数据帧,那么您可以使用
pivot\u wider()轻松实现这一点。


如果您的真实数据帧有两列以上,您可以省略
行id
部分。有关更多示例,请参见。

非常感谢,这也是working@DhanuLukalapu很高兴得到帮助!点击左边的复选标记,您可以随意接受其中一个最适合您的答案。每个帖子只能接受一个答案。提及-
X<-data.frame(Dev=c("a","b","a","d","a"), value=c(1,2,3,4,7))
Split<-split(X,f=X$Dev) 
library(tidyr)

X %>% 
    rowid_to_column() %>%  
    pivot_wider(names_from = Dev, values_from = value) %>% 
    select((-rowid))