【问题标题】:R: Nested data problems: data frame with list columns issueR:嵌套数据问题:带有列表列问题的数据框
【发布时间】:2020-05-10 21:38:47
【问题描述】:

我的一般问题是我需要使用嵌套列表将多个列与其他列中的数据分开。显示结构可能更容易:

Var1         Var2        Var3            Var4
"BCD"        "123"   c("A, B, C")    c("T, U, V")
"GFV"        "125"   c("A, B, D")    c("L, C, A")

我需要得到什么:

Var1         Var2        Var3            Var4
"BCD"        "123"       A               T
"BCD"        "123"       B               U
"BCD"        "123"       C               V       
"GFV"        "125"       A               L
"GFV"        "125"       B               C
"GFV"        "125"       D               A

我尝试了几种解决方案,但没有一个完全能按预期工作。任何帮助表示赞赏。

【问题讨论】:

  • 请通过dput(head(df,n))提供数据。

标签: r list dataframe nested


【解决方案1】:

我们可以使用unnest

library(tidyr)
library(dplyr)
df1 %>%
  unnest(cols = c(Var3, Var4))
# A tibble: 6 x 4
#  Var1  Var2  Var3  Var4 
#  <chr> <chr> <chr> <chr>
#1 BCD   123   A     T    
#2 BCD   123   B     U    
#3 BCD   123   C     V    
#4 GFV   125   A     L    
#5 GFV   125   B     C    
#6 GFV   125   D     A  

数据

df1 <- structure(list(Var1 = c("BCD", "GFV"), Var2 = c("123", "125"), 
    Var3 = structure(list(c("A", "B", "C"), c("A", "B", "D")),
      class = "AsIs"), 
    Var4 = structure(list(c("T", "U", "V"), c("L", "C", "A")),
  class = "AsIs")), class = "data.frame", row.names = c(NA, 
-2L))

【讨论】:

  • 这正是我最终要做的。
【解决方案2】:

strsplit 可用于将字符串拆分为向量/列表,默认情况下data.frame 将重复其他变量和拉伸

data.frame(x$var1, x$var2,
       var3 = unlist(strsplit(x$var3,",")),
       var4 = unlist(strsplit(x$var4,",")))

结果

 x <- data.frame(var1=c("BCD","GFV"), var2=c("123","125"), var3=c("A,B,C","A,B,D"), var4 = c("T,U,V","L,C,A"),stringsAsFactors=F)
  x.var1 x.var2 var3 var4

1    BCD    123    A    T
2    GFV    125    B    U
3    BCD    123    C    V
4    GFV    125    A    L
5    BCD    123    B    C
6    GFV    125    C    A

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-13
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2021-04-02
    • 2021-05-24
    相关资源
    最近更新 更多