首页 > 解决方案 > R:按第一个字符的出现次数计数

问题描述

我有这种类型的数据框

#Data structure

(list(ID = 1:5, Name = c("_PEN", "_RULER","-PAPER", "-GUM", "_BOOK"), class = "data.frame"))

DF ID  Name    
   1   _PEN 
   2   _RULER
   3   -PAPER
   4   -GUM
   5   _BOOK

我想得到这个:

DF TYPE  n    
   "_"   3 
   "-"   2
   

dplyr 有一些易于使用的解决方案吗?

标签: rstringdplyrcountcharacter

解决方案


我们可以sub用来提取Name使用正则表达式的第一个字符并table用来计算它的出现次数。

stack(table(sub('(.).*', '\\1', df$Name)))

相同的代码dplyr是:

library(dplyr)
df %>% count(Name = sub('(.).*', '\\1', Name))

#  Name n
#1    _ 3
#2    - 2

数据

df <- structure(list(ID = 1:5, Name = c("_PEN", "_RULER", "-PAPER", 
"-GUM", "_BOOK")), class = "data.frame", row.names = c(NA, -5L))

推荐阅读