R中的分裂字符串和生成频率表

aes*_*sir 4 string split r frequency

我在R数据框中有一列公司名称,如下所示:

"ABC Industries"  
"ABC Enterprises"  
"123 and 456 Corporation"  
"XYZ Company"
Run Code Online (Sandbox Code Playgroud)

等等.我正在尝试生成此列中出现的每个单词的频率表,例如,如下所示:

Industries   10  
Corporation  31  
Enterprise   40  
ABC          30  
XYZ          40  
Run Code Online (Sandbox Code Playgroud)

我对R比较陌生,所以我想知道一个很好的方法来解决这个问题.我应该拆分字符串并将每个不同的单词放入新列吗?有没有办法用一个单词将多字行分成多行?

Dir*_*tel 9

如果你愿意,你可以用一个班轮做:

R> text <- c("ABC Industries", "ABC Enterprises", 
+            "123 and 456 Corporation", "XYZ Company")
R> table(do.call(c, lapply(text, function(x) unlist(strsplit(x, " ")))))

        123         456         ABC         and     Company 
          1           1           2           1           1 
Corporation Enterprises  Industries         XYZ 
          1           1           1           1 
R> 
Run Code Online (Sandbox Code Playgroud)

这里我strsplit()用来打破每个条目介绍组件; 这将返回一个列表(在列表中).我使用do.call()这么简单地将所有结果列表连接成一个向量,table()总结.


Jos*_*ien 6

这是另一个单线.它用于paste()将所有列条目组合成一个长文本字符串,然后将其拆分并制成表格:

text <- c("ABC Industries", "ABC Enterprises", 
         "123 and 456 Corporation", "XYZ Company")

table(strsplit(paste(text, collapse=" "), " "))
Run Code Online (Sandbox Code Playgroud)