【问题标题】:combining the list of lists of varying length with a fixed list将可变长度列表的列表与固定列表相结合
【发布时间】:2020-02-20 17:04:51
【问题描述】:

我有一个要合并的数据,其中包含长度不等的列表列表。例如

 A<- c("AA-1234", "AA-1245", "AA-12445")

B<- c( c("1", "2", "34", "aab5"), c("a3", "3e"), c(""))

所以A和B的行数相等,A中的第一行是id号,B行的元素是各自的响应。您可以看到“AA-1234”的元素有 4 个元素,“AA-1234”的元素有 2 个元素。我想有如下数据集:

   A         B
AA-1234      1
AA-1234      2
AA-1234      34
AA-1234      aab5
AA-1245      a3
AA-1245      3e
AA-12445      

有什么建议吗?

 B<- list(c("1", "2", "34", "aab5"), c("a3", "3e"), c(""))

【问题讨论】:

  • B 不是列表列表。这是一个简单的向量
  • 对不起,我不知道如何编程。我在我的数据集中看到 c{“1”。 “2”)。行中的 c("233") 等..请告知如何更改/编辑
  • 使用dput 共享您的数据的实际子集,即dput(your_object)
  • 它非常庞大,第一行有 25 条记录,下一行有 20 条记录,大约有 1214 行..
  • 你可以做dput(head(data))

标签: r dataframe plyr tidyr


【解决方案1】:
require(dplyr)

A<- c("AA-1234", "AA-1245", "AA-12445")

B<- c( list(c("1", "2", "34", "aab5")), list(c("a3", "3e")), list(""))




as_tibble(cbind(A,B)) %>%  
  mutate(A = unlist(A)) %>% 
  unnest(B)


# # A tibble: 7 x 2
#   A        B    
# <chr>    <chr>
# 1 AA-1234  1    
# 2 AA-1234  2    
# 3 AA-1234  34   
# 4 AA-1234  aab5 
# 5 AA-1245  a3   
# 6 AA-1245  3e   
# 7 AA-12445 ""  

【讨论】: