取消列出数据框中已列出的列

2024-02-03

我有一个包含多个级别的列表,我希望将数据级别转换为数据帧,其中变量 chr 折叠为单个字符串。

 myList <- list(total_reach = list(4),
                   data = list(list(reach = 2,
                              chr = list("A", "B", "C"),
                              nr = 3,
                              company = "Company A"),
                   list(reach = 2,
                        chr = list("A", "B", "C"),
                        nr = 3,
                        company = "Company B")))

我想将其转换为如下所示的数据框:

  reach     chr nr   company
1     2 A, B, C  3 Company A
2     2 A, B, C  3 Company B

使用 dplyr 和 data.table 我已经走到了这一步。

library(data.table)
library(dplyr)
df <- data.frame(rbindlist(myList[2])) %>% t() %>% as.data.frame()

colnames(df) <- names(myList$data[[1]])
rownames(df) <- c(1:nrow(df))

df$chr <- as.character(df$chr)

df <- df %>%
  mutate_all(funs(unlist(.recursive = F, use.names = F)))

但是,chr 列包含带有“list()”的字符串。

  reach                 chr nr   company
1     2 list("A", "B", "C")  3 Company A
2     2 list("A", "B", "C")  3 Company B

A)是否有更好的方法来取消此类列表并将其转换为数据框?
B) 如何将 chr 中的列表折叠为字符串或因子?


这是一个使用的选项tidyverse

library(tidyverse)
myList[-1] %>% 
     map_df(transpose)  %>% 
     mutate_at(vars(c('reach', 'nr', 'company')), funs(unlist))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

取消列出数据框中已列出的列 的相关文章

随机推荐