首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将列表中的多个df连接到单个df的不同列中

将列表中的多个df连接到单个df的不同列中
EN

Stack Overflow用户
提问于 2020-12-15 05:22:38
回答 4查看 57关注 0票数 1

我在R中有一个数据帧列表(Df1),由40个数据帧组成,每个数据帧只有1列(V1)。我想将df1中的所有数据帧连接到一个数据帧( df2 )中,其中df1中的每个数据帧都变成了df2中的一列。

到目前为止,我是这样做的:

代码语言:javascript
复制
df2 <- bind_rows(df1, .id = "column_label")

head(df2)   
column_label         V1
Hazt              miR-92
Hazt              miR-92
Hazt              miR-92
Hazt              miR-184
Hazt              miR-184
PPee              miR-92
PPee              miR-3

然而,如前所述,我希望新的数据帧看起来像这样

代码语言:javascript
复制
Hazt       PPee 
miR-92     miR-92
miR-92     miR-3
miR-92
miR-184
miR-184

其列数与原始数据帧在df1中的列数一样多。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-12-15 05:25:57

我们可以使用pivot_wider

代码语言:javascript
复制
library(dplyr)
library(tidyr)
library(data.table)
df2 %>% 
    mutate(rn = rowid(column_label)) %>%
    pivot_wider(names_from = column_label, values_from = V1, values_fill = "") %>%
    select(-rn)

-output

代码语言:javascript
复制
# A tibble: 5 x 2
#  Hazt    PPee    
#  <chr>   <chr>   
#1 miR-92  "miR-92"
#2 miR-92  "miR-3" 
#3 miR-92  ""      
#4 miR-184 ""      
#5 miR-184 ""      

数据

代码语言:javascript
复制
df2 <- structure(list(column_label = c("Hazt", "Hazt", "Hazt", "Hazt", 
"Hazt", "PPee", "PPee"), V1 = c("miR-92", "miR-92", "miR-92", 
"miR-184", "miR-184", "miR-92", "miR-3")), class = "data.frame",
row.names = c(NA, 
-7L))
票数 2
EN

Stack Overflow用户

发布于 2020-12-15 05:54:58

如果df1是一个list,那么试试这个:

代码语言:javascript
复制
df2 <- do.call("cbind",df1)

如果您的数据帧具有不同的行数,请尝试以下操作:

代码语言:javascript
复制
df1 <- lapply(df1, function(x,n){if(nrow(x)<n){x[n,]<-NA};return(x)},n = max(sapply(df1,nrow)))

do.call("cbind",df1)
票数 3
EN

Stack Overflow用户

发布于 2020-12-15 09:54:40

使用list2DF + unstack的基本R选项

代码语言:javascript
复制
> list2DF(lapply(u <- unstack(rev(df2)), `length<-`, max(lengths(u))))
     Hazt   PPee
1  miR-92 miR-92
2  miR-92  miR-3
3  miR-92   <NA>
4 miR-184   <NA>
5 miR-184   <NA>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65296676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档