📌  相关文章
📜  如何计算 R DataFrame 每行中某个字符的出现次数?

📅  最后修改于: 2022-05-13 01:54:57.247000             🧑  作者: Mango

如何计算 R DataFrame 每行中某个字符的出现次数?

在本文中,我们将讨论如何在 R 编程语言中计算 DataFrame 中给定字符在每一行中出现的次数。

方法一:使用stringr包

R 编程语言中的 stringr 包可用于执行字符串操作和提取,可以安装到工作空间中。

str_count() 方法用于返回字符串向量中指定模式的匹配。它返回在输入参数向量中找到的模式实例数的整数向量。 str_count() 方法区分大小写。

模式可以是单个字符或堆叠在一起的一组字符。它甚至可能包含特殊符号或数字。如果找不到模式,则返回整数值 0。

例子:

R
# loading the reqd library
library ("stringr")
  
# creating a data frame
data_frame <- data.frame(
  col1 = c(1:5), col2 = c("Geeks","for","geeks","CSE","portal"))
  
# character to search for
ch <- "e"
  
# counting the occurences of character
count <- str_count(data_frame$col2, ch)
print ("Count of e :")
print (count)


R
# creating a data frame
data_frame <- data.frame(
  col1 = c(1:5), col2 = c("!?contains","do!es!nt",
                          "Contain","cs!!!e","circus?"))
  
print ("Original DataFrame")
print (data_frame)
  
# character to search for
ch <- "!"
count <- regmatches(
  data_frame$col2, gregexpr(ch, data_frame$col2))
  
print ("Count of !")
  
# returning the number of occurences
lengths(count)


R
# creating a data frame
data_frame <- data.frame(
  col1 = c(1:5), col2 = c("!?contains","do!es!nt",
                          "Contain","cs!!!e","circus?"))
  
print ("Original DataFrame")
print (data_frame)
  
# character to search for
ch <- "!"
count <- sapply(as.character(data_frame$col2), 
                function(x, letter = ch){
  str <- strsplit(x, split = "")
  sum(unlist(str) == letter)
})
print ("Count of !")
  
# returning the number of occurences
print(count)


输出

方法二:使用grepexpr方法

基 R 的 gregexpr() 方法用于指示模式在指定字符向量中的位置。它用于返回与输入字符数组的每个组件匹配的起始位置的向量向量。返回向量的长度等于原始字符串向量的长度。



在这里,模式是要搜索的字符,而 str 是要在其中查找模式的字符串列。 regmatches() 方法应用于此函数的输出,该方法用于提取或替换匹配的子字符串匹配的数据。如果没有找到匹配的子字符串模式,则返回空字符串。

接下来是应用lengths() 方法,该方法从regmatches() 向量中返回每个子串组件的长度。

例子:

电阻



# creating a data frame
data_frame <- data.frame(
  col1 = c(1:5), col2 = c("!?contains","do!es!nt",
                          "Contain","cs!!!e","circus?"))
  
print ("Original DataFrame")
print (data_frame)
  
# character to search for
ch <- "!"
count <- regmatches(
  data_frame$col2, gregexpr(ch, data_frame$col2))
  
print ("Count of !")
  
# returning the number of occurences
lengths(count)

输出

方法 3:使用 sapply 方法

  • R 中的 sapply() 方法用于将用户定义的函数应用于作为第一个参数的指定输入向量。在这种情况下,用户定义的函数由一系列步骤组成:

句法:

  • strsplit() 方法用于将输入向量的每个分量根据“ ”分隔符拆分为多个分量。在字符串由多个单词组成的情况下很有用。它返回列的每个元素中的单词数组。
  • 然后将 unlist() 方法应用于字母向量中的每个单词,并检查每个字母是否与我们要搜索的字符等效。然后,每次找到匹配项时,都会应用 sum() 方法来增加计数。

句法:

例子:

电阻

# creating a data frame
data_frame <- data.frame(
  col1 = c(1:5), col2 = c("!?contains","do!es!nt",
                          "Contain","cs!!!e","circus?"))
  
print ("Original DataFrame")
print (data_frame)
  
# character to search for
ch <- "!"
count <- sapply(as.character(data_frame$col2), 
                function(x, letter = ch){
  str <- strsplit(x, split = "")
  sum(unlist(str) == letter)
})
print ("Count of !")
  
# returning the number of occurences
print(count)

输出