【问题标题】:Access value within list that is within a data frame访问数据框中的列表中的值
【发布时间】:2021-04-29 22:41:00
【问题描述】:

我正在处理列表的数据框。我想访问列表中的文本值 (df$Promoted) 并创建一个包含这些值的新列。我试过 unlist() ,它只为每个观察返回值 1。

df$Promoted 

Promoted
c(jumbobagpinkpolkadot = 1)
c(vintagesnapcards = 1)
c(bakingsetpieceretrospot = 1)
c(doormatkeepcalmandcomein = 1)
c(setofcaketinspantrydesign = 1)
c(vintagechristmasbunting = 1)

我希望有以下列:

df$Promoted2
jumbobagpinkpolkadot
vintagesnapcards
bakingsetpieceretrospot
doormatkeepcalmandcomein
setofcaketinspantrydesign
vintagechristmasbunting
dput(df)

structure(list(Promoted = list(c(setofribbonsvintagechristmas = 1L), 
    c(jumbobagvintageleaf = 1L), c(lunchbagblackskull = 1L), 
    c(doormatkeepcalmandcomein = 1L), c(spaceboybirthdaycard = 1L), 
    c(vintagechristmasbunting = 1L))), class = "data.frame", row.names = c(NA, 
-6L))

【问题讨论】:

  • 您能否使用dput(df$Promoted) 将您的列表粘贴到问题中,以避免对其结构产生疑问并使您的问题可重复。
  • 将其添加到问题@Peter

标签: r list dataframe


【解决方案1】:

我们可以为此使用一些正则表达式:

df$Promoted2 <- gsub(".*\\((.*) = 1\\).*", "\\1", df$Promoted)

> df$Promoted2
[1] "setofribbonsvintagechristmas" "jumbobagvintageleaf"          "lunchbagblackskull"          
[4] "doormatkeepcalmandcomein"     "spaceboybirthdaycard"         "vintagechristmasbunting" 

【讨论】:

    【解决方案2】:

    你可以使用stack

    data <- stack(unlist(df$Promoted))
    names(data) <- c('Promoted', 'Promoted2')
    data
    
    #  Promoted                    Promoted2
    #1        1 setofribbonsvintagechristmas
    #2        1          jumbobagvintageleaf
    #3        1           lunchbagblackskull
    #4        1     doormatkeepcalmandcomein
    #5        1         spaceboybirthdaycard
    #6        1      vintagechristmasbunting
    
    str(data)
    #'data.frame':  6 obs. of  2 variables:
    # $ Promoted : int  1 1 1 1 1 1
    # $ Promoted2: Factor w/ 6 levels "setofribbonsvintagechristmas",..: 1 2 3 4 5 6
    

    【讨论】:

      猜你喜欢
      • 2011-12-19
      • 2021-11-20
      • 1970-01-01
      • 2021-04-02
      • 2017-08-01
      • 1970-01-01
      • 2021-09-14
      • 2021-08-21
      • 2021-02-13
      相关资源
      最近更新 更多