【问题标题】:Total unique words in a column - R一列中的唯一单词总数 - R
【发布时间】:2018-06-26 04:35:06
【问题描述】:

我有兴趣计算列中出现的唯一单词。 而不是像Count unique/dinstinct words into a new column 中解释的那样每行获取唯一的单词 我有兴趣获得一个计算该列中所有唯一条目的答案。 在以下示例中,唯一国家/地区总数为 3: 中国 澳大利亚和 韩国

有没有捷径可以得到这笔钱? 我还在学习 R,所以我的知识有限。

Countries

China  Australia

Australia

China China 

Korea Korea Korea Korea

【问题讨论】:

    标签: r sum strsplit


    【解决方案1】:

    我们可以split按空格unlist的“国家”列,并得到unique字的length

    length(unique(unlist(strsplit(df1$Countries, " "))))
    #[1] 3
    

    或使用tidyverse

    library(tidyverse)
    df1 %>% 
        separate_rows(Countries) %>% 
        distinct() %>%
        nrow
    #[1] 3
    

    数据

    df1 <- structure(list(Countries = c("China Australia", "Australia", 
     "China China", "Korea Korea Korea Korea")), .Names = "Countries",
      class = "data.frame", row.names = c(NA, -4L))
    

    【讨论】:

    • 我刚刚尝试了 tidyverse 解决方案,我想知道为什么这两种方法会给出不同的结果?根据我的理解,tidyverse 方法将最终总和作为每行唯一条目的总和。较早的方法显然是给出该列中唯一单词的总和(这是我想要的)。
    • @SadiaN 我显示的数据得到了相同的结果。 separate_rows 拆分单词并扩展列,然后distinct 获取不同的元素,nrow 给出行数。所以,它基本上是相同的方法
    • 能否解释一下第二种方法@akrun,separate_rows是什么意思,为什么我们最后有nrow?
    • @SaidaN 在第二种方法中,通过调用distinct,我们得到具有唯一行的数据集,并且从那里,nrow 我们正在寻找数据集的行数。 separate_rows 将根据提供的模式将一行拆分为不同的行\
    【解决方案2】:
    df %>% 
       separate_rows(col,sep=",") %>% 
       count(col)
    

    【讨论】:

      【解决方案3】:

      这是基于您提供的数据的模式:

      length(unique(unlist(str_split(data$Countries, ' '))))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-04
        相关资源
        最近更新 更多