列中的唯一单词总数-R

列中的唯一单词总数-R,r,sum,strsplit,R,Sum,Strsplit,我对计算列中出现的独特单词感兴趣。 而不是像中所述,每行获得唯一的单词 我对得到一个答案感兴趣,这个答案将统计该列中所有独特的条目。 在以下示例中,唯一国家的总数为3: 中国 澳大利亚和 韩国 要得到这笔钱有没有捷径? 我仍在学习R,因此我的知识有限 Countries China Australia Australia China China Korea Korea Korea Korea 我们可以按空格拆分列“Countries”,取消列出,并获得唯一的单词的长度 length

我对计算列中出现的独特单词感兴趣。 而不是像中所述,每行获得唯一的单词 我对得到一个答案感兴趣,这个答案将统计该列中所有独特的条目。 在以下示例中,唯一国家的总数为3: 中国 澳大利亚和 韩国

要得到这笔钱有没有捷径? 我仍在学习R,因此我的知识有限

Countries

China  Australia

Australia

China China 

Korea Korea Korea Korea

我们可以
按空格拆分
列“Countries”,取消列出
,并获得
唯一的
单词的
长度

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

或者使用
tidyverse

library(tidyverse)
df1 %>% 
    separate_rows(Countries) %>% 
    distinct() %>%
    nrow
#[1] 3
数据
df1这是基于您提供的数据模式:

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

我刚刚尝试了tidyverse解决方案,我想知道为什么这两种方法会给出不同的结果?根据我的理解,tidyverse方法给出的最终总和是每行唯一条目的总和。早期的方法显然是给出该列中唯一单词的总和(这是我想要的)。@SadiaN我得到了与我显示的数据相同的结果。
separate_rows
拆分单词并展开列,然后
distinct
获取不同的元素,nrow给出行数。因此,它基本上是相同的方法。请您解释一下第二种方法@akrun,分隔行的含义是什么,为什么我们最后有nrow?@SaidaN在第二种方法中,通过调用
distinct
,我们得到具有唯一行的数据集,然后从那里,使用
nrow
我们查找数据集的行数<代码>分隔行
将根据提供的模式将一行拆分为不同的行\
length(unique(unlist(str_split(data$Countries, ' '))))
df %>% 
   separate_rows(col,sep=",") %>% 
   count(col)