句子中没有出现文本的次数

时间:2018-09-21 02:44:22

标签: r

有一个数据框,其中包含如下句子中的单词。我需要一个输出,该输出不显示每个单词出现的次数。 Column 1 Electronic, socket, clamp, cooler Actuator, cylinder, valve Hydraulic, electronic, cooler Actuator, Pnematic, cylinder, valve

我需要以下输出 Column 2 Column 3 Eletronic 2 Socket 1 clamp 1 cooler 2 actuator 2 cylinder 2 valve 2 Hydraulic 1 Electronic 1 Pneumatic 1

2 个答案:

答案 0 :(得分:1)

这是基本的R选项。我们可以尝试将sapplystrsplit一起使用,以生成字符向量列表,该列表来自原始CSV内容。然后,我们可以unlist列出该列表以生成一个单独的术语向量,然后按术语进行汇总以生成计数。

df <- data.frame(v1=c("Electronic, socket, clamp, cooler",
                      "Actuator, cylinder, valve", "Hydraulic, electronic, cooler",
                      "Actuator, Pnematic, cylinder, valve"), stringsAsFactors=FALSE)
out <- unlist(sapply(df$v1, function(x) { strsplit(x, ",\\s*") }))
aggregate(out, by=list(col2=out), FUN=length)

         col2 x
1    Actuator 2
2  Electronic 1
3   Hydraulic 1
4    Pnematic 1
5       clamp 1
6      cooler 2
7    cylinder 2
8  electronic 1
9      socket 1
10      valve 2

请注意,将非规范化CSV数据存储在R(或实际上是任何数据工具)中并不是最佳选择,这将使处理这些数据变得困难。

编辑:

上面的代码假定v1列是字符,而不是因数。该代码不适用于因子数据,并且会生成“非字符参数”错误。

答案 1 :(得分:0)

假定它是这样读取的,并采用以下格式:

x <- read.table(text="'Column 1'
'Electronic, socket, clamp, cooler'
'Actuator, cylinder, valve'
'Hydraulic, electronic, cooler'
'Actuator, Pnematic, cylinder, valve'", header = TRUE)

data.frame(table(unlist(strsplit(x[,1], ","))))