如何计算R中数据帧中某个单词的每次出现次数?
下面是R中我的数据框中的一些条目示例如何计算R中数据帧中某个单词的每次出现次数?,r,dataframe,count,unique,R,Dataframe,Count,Unique,下面是R中我的数据框中的一些条目示例 [1] “0” [2] “温暖” [3] “触摸” [4] “刺痛” [5] “接触、压力” [6] “压力” [7] 刺痛,其他(描述) 等等 我想数一数以下词语的每一次出现:疼痛、刺痛、触摸、抓挠、其他(描述)、压力、怕痒、温暖、寒冷 然而,当我 sum(DF==“Touch”) 它只统计有人只输入了“触摸”但没有输入“触摸、压力”的单元格。我如何计算单词“Touch”出现的每个单元格,无论它是否与另一个单词在一起?任何帮助都将不胜感激:),我就是想
- [1] “0”
- [2] “温暖”
- [3] “触摸”
- [4] “刺痛”
- [5] “接触、压力”
- [6] “压力”
- [7] 刺痛,其他(描述)
- 等等
sum(DF==“Touch”)
它只统计有人只输入了“触摸”但没有输入“触摸、压力”的单元格。我如何计算单词“Touch”出现的每个单元格,无论它是否与另一个单词在一起?任何帮助都将不胜感激:),我就是想不出来。如果我们想计算子字符串单词,那么使用
grepl
查找特定的单词模式,方法是使用lappy
循环数据集,通过执行元素添加(+
)来减少取向量的和
sum(Reduce(`+`, lapply(DF, grepl, pattern = "\\bTouch\\b")))
#[1] 5
或者,如果我们将数据更改为matrix
,使用as.matrix
sum(grepl("\\bTouch\\b", as.matrix(DF)))
#[1] 5
注意:\\b
-指定正则表达式中的单词边界。如果我们没有这些,那么它可能会与“触碰”、“触碰”和“触碰”相匹配
它可以包装在函数中
f1 <- function(dat, word) {
pat <- paste0("\\b", word, "\\b")
count <- sum(Reduce(`+`, lapply(dat, grepl, pattern = pat)))
return(count)
}
f1(DF, "Touch")
#[1] 5
数据
DF
sapply(c("Warm", "Touch"), function(x) f1(DF, x))
# Warm Touch
# 2 5
DF <- structure(list(Col1 = c("0", "Warm", "Touch", "Tingling",
"Touch, Pressure",
"Pressure"), Col2 = c("Touch", "Warm", "0", "Tingling", "Touch, Pressure",
"Pressure, Touch")), class = "data.frame", row.names = c(NA,
-6L))