【问题标题】:R: Count by occurrence of first characterR:按第一个字符的出现次数计数
【发布时间】:2023-03-16 23:17:01
【问题描述】:

我有这种类型的数据框

#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 有一些易于使用的解决方案吗?

【问题讨论】:

  • 试试table(gsub('[A-Za-z]', '', df$Name))
  • 或者在dplyrcount(DF %>% transmute(TYPE = substr(Name, 1, 1)), TYPE)

标签: r string dplyr count character


【解决方案1】:

我们可以使用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))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 1970-01-01
    相关资源
    最近更新 更多