繁体   English   中英

访问数据框中的列表中的值

[英]Access value within list that is within a data frame

我正在使用列表的数据框。 我想访问列表中的文本值 (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))

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

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

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

您可以使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM