【问题标题】:Combine string elements within a list into one variable in R将列表中的字符串元素合并为 R 中的一个变量
【发布时间】:2020-07-24 18:58:05
【问题描述】:

我有一个数据框 (df),其中一个变量是一个包含字符串向量 (mylist) 的列表。

v1 = c("a", "b", "c")
v2 = c("d", "e", "f", "g", "h")
v3 = c("x", "y", "z", "k")

df = tibble(id = seq(1:3), mylist = list(v1, v2, v3))

如何将 mylist 的元素组合成每一行的单个变量?我希望我的数据如下所示:

id mylist
1  "a b c"
2  "d e f g h"
3  "x y z k"

【问题讨论】:

    标签: r


    【解决方案1】:

    一个dplyr 选项可以是:

    df %>%
     rowwise() %>%
     mutate(mylist = Reduce(paste, mylist))
    
         id mylist   
      <int> <chr>    
    1     1 a b c    
    2     2 d e f g h
    3     3 x y z k  
    

    【讨论】:

      【解决方案2】:

      基本 R 选项是使用 sapply()paste() 折叠列表元素:

      df$mylist <- sapply(mylist, paste, collapse = " ")
      df
      
      # A tibble: 3 x 2
           id mylist   
        <int> <chr>    
      1     1 a b c    
      2     2 d e f g h
      3     3 x y z k 
      

      或者,使用dplyrpurrr::map_chr()

      library(purrr)
      library(dplyr) 
      
      df %>%
        mutate(mylist = map_chr(mylist, paste, collapse = " "))
      

      【讨论】:

        【解决方案3】:

        一个选项是unnest 并做一个group_by paste

        library(dplyr)
        library(tidyr)
        library(stringr)
        df %>%
            # // expand the dataset by unnesting the column
            unnest(c(mylist)) %>%
            # // grouped by id
            group_by(id) %>% 
            # // paste the elements of mylist to a single string
            summarise(mylist = str_c(mylist, collapse=' '))
        # A tibble: 3 x 2
        #    id mylist   
        #  <int> <chr>    
        #1     1 a b c    
        #2     2 d e f g h
        #3     3 x y z k  
        

        【讨论】:

          猜你喜欢
          • 2016-06-25
          • 2014-06-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-11-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多