[英]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.