如何基于字符串拆分列表-自动

时间:2019-02-12 18:42:57

标签: r

我想根据自动生成的字典/索引/词汇表/ notsurehowtocallit拆分列表

我有一个数据框,其中最后一列是字符列表。其中一些包含3个字符串,一些包含20个,其他都不包含。数据看起来像这样

     name    age    category
1    John    34     c('sports', 'USA')
2    Mary    20     c('model', 'sports', 'Canada')
3    Sue     65     c('scholar', 'USA')
4    Carl    12     NA
n    ...     ..     ...

数据很长,我不知道要查找什么。这意味着,我没有期望的字符串列表。我希望R为我解决该问题并为我生成此字符串列表。

为此,我已经尝试过:

 > category.frq <- table(unlist(category))
 > cbind(names(category.frq),as.integer(category.frq))

哪个给我方便的字数统计和索引编制。但是我是R的新手,所以我不确定如何从那里开始。有可以帮我做到的包裹吗?

理想情况下,我会得到以下结果:

     name    age    category                        sports   USA   model  ...
1    John    34     c('sports', 'USA')              1        1     NA
2    Mary    20     c('model', 'sports', 'Canada')  1        NA    1
3    Sue     65     c('scholar', 'USA')             NA       1     NA
4    Carl    12     NA                              NA       NA    NA
n    ...     ..     ...                             ..       ..    ..

1 个答案:

答案 0 :(得分:0)

对@Akrun的评论进行更深入的阐述...

df1 <- data.frame(category = I(list(c('a','b','c', 'a'), 
                                    c('b','d'), 
                                    c('b', 'e', 'f', 'd'), 
                                    c('g','h'),
                                    NA)))

l <- df1$category
names(l) <- seq_len(length(l))
df2 <- as.data.frame.matrix(t(table(stack(l))))
df2[df2 == 0] <- NA
df1 <- cbind(df1, df2)
df1

#    category  a  b  c  d  e  f  g  h
#1 a, b, c, a  2  1  1 NA NA NA NA NA
#2       b, d NA  1 NA  1 NA NA NA NA
#3 b, e, f, d NA  1 NA  1  1  1 NA NA
#4       g, h NA NA NA NA NA NA  1  1
#5         NA NA NA NA NA NA NA NA NA