【问题标题】:How to split an element on R? [duplicate]如何拆分R上的元素? [复制]
【发布时间】:2022-02-13 01:08:48
【问题描述】:

嗯,我正在处理一个数据框,该数据框有一列,其中某些元素有两个或多个单词。我正在尝试将此列用作矢量来制作饼图,并且我需要将这些元素上的单词拆分为单个单词以计为图表的个体。

这就是有问题的向量:

science$area
 [1] "Matematica"                          "Filosofia"                          
 [3] "Arqueologia"                         "Astronomia"                         
 [5] "Biologia, Paleontologia"             "Biologia"                           
 [7] "Psicologia"                          "Astronomia"                         
 [9] "Fisica"                              "Biologia, Paleontologia"            
[11] "Astronomia"                          "Biologia"                           
[13] "Biologia, Fisica, Matematica, Saude" "Fisica"                             
[15] "Paleontologia"                       "Saude"                              
[17] "Biologia, Saude"                     "Biologia, Saude"                    
[19] "Saude"                               NA                                   
[21] "Biologia"                            "Fisica"                             
[23] "Psicologia"                          "Biologia"                           
[25] "Fisica"                              "Biologia"                           
[27] NA                                    "Historia"                           
[29] "Experiencias"                        "Astronomia"                         
[31] "Geografia"                           "Matematica"                         
[33] "Astronomia"                          "Filosofia, Literatura"              
[35] "Biologia"                            "Psicologia"                         
[37] "Biologia, Saude"                     "Saude"                              
[39] "Fisica"                              "Experiencias, Fisica"               
[41] "Biologia, Saude"                     "Biologia"                           
[43] "Computacao"                          "Biologia"                           
[45] "Fisica"                              "Fisica"                             
[47] "Filosofia, Historia, Literatura"     NA                                   
[49] "Literatura"                          "Astronomia"                         
[51] "Geografia, Meio Ambiente"            "Geografia"                          
[53] "Biologia, Paleontologia"             "Computacao"                         
[55] "Fisica, Literatura"                  "Filosofia"                          
[57] "Geografia, Meio Ambiente"            "Fisica"                             
[59] "Biologia"                            "Geografia, Historia" 

当我总结它时,返回:

> summary(factor(science$area))
                    Arqueologia                          Astronomia 
                              1                                   6 
                       Biologia Biologia, Fisica, Matematica, Saude 
                              9                                   1 
        Biologia, Paleontologia                     Biologia, Saude 
                              3                                   4 
                     Computacao                        Experiencias 
                              2                                   1 
           Experiencias, Fisica                           Filosofia 
                              1                                   2 
Filosofia, Historia, Literatura               Filosofia, Literatura 
                              1                                   1 
                         Fisica                  Fisica, Literatura 
                              8                                   1 
                      Geografia                 Geografia, Historia 
                              2                                   1 
       Geografia, Meio Ambiente                            Historia 
                              2                                   1 
                     Literatura                          Matematica 
                              1                                   2 
                  Paleontologia                          Psicologia 
                              1                                   3 
                          Saude                                NA's 
                              3                                   3

因此,如您所见,“Biologia,Paleontologia”被视为一个级别,我需要将它同时计入“Biologia”和“Paleontologia”。我怎样才能做到这一点??我已经尝试使用 c() 并在其中使用 "" 来编写这些元素,但未成功,还尝试使用 split(),但它只是在不考虑单词的情况下拆分...

【问题讨论】:

    标签: r dataframe vector pie-chart


    【解决方案1】:

    在基数 R 中,我们可以使用strsplit 将字符串在每次出现“, ”时进行拆分,然后将unlist 结果拆分为一个向量。请注意,此向量将比您的原始数据框长,因此不能作为列存储在其中。

    table(unlist(strsplit(science$area, ", ")))
    #> 
    #>   Arqueologia    Astronomia      Biologia    Computacao  Experiencias 
    #>             1             6            17             2             2 
    #>     Filosofia        Fisica     Geografia      Historia    Literatura 
    #>             4            11             5             3             4 
    #>    Matematica Meio Ambiente Paleontologia    Psicologia         Saude 
    #>             3             2             4             3             8
    

    reprex package (v2.0.1) 于 2022-02-12 创建

    【讨论】:

    • 成功了!我正要发布我发现这个功能作为解决方案哈哈......无论如何,非常感谢!
    【解决方案2】:

    使用 strsplit() 和 unlist() 我能够解决我的问题。

    像这样:

    areas=unlist(strsplit(science$area,","))
    pie(summary(factor(areas)))
    

    【讨论】:

      【解决方案3】:

      使用tidyverse,我们可以使用separate_rowscount

      library(dplyr)
      library(tidyr)
      library(ggplot2)
      separate_rows(science, area, sep = ",\\s*") %>%
          count(area) %>%
          ggplot(aes(x = "", y = n, fill = area)) + 
            geom_bar(stat = "identity") +
            coord_polar("y", start=0)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-19
        • 1970-01-01
        • 1970-01-01
        • 2021-04-24
        • 2022-06-15
        • 2011-02-11
        • 2019-10-22
        • 2017-02-16
        相关资源
        最近更新 更多