如何计算R中多个字符值的出现次数?

时间:2019-05-08 04:49:31

标签: r

假设我有一个数据帧“ df”,如下所示:

Item  |  Tech
  1       F23
  1       F32
  2       F23
  2       C27
  2       C76
  3       A21 

,我有一个带有所有技术代码的向量“ c”:

Number  |   Tech
  1          A01
  2          F23
  3          C27
  4          C76
  5          A21
  6          E17

对于下面矢量的每个技术,我如何计算共享相同技术的项目数? (还会在需要时报告零)。

Number  |   Tech  |  Count in Item
  1          A01          0
  2          F23          2
  3          C27          1
  4          C76          1
  5          A21          0
  6          E17          0

数据帧“ df”和向量“ c”确实很长,所以我想有一种快速的方法来获取最后一张表。

2 个答案:

答案 0 :(得分:0)

您可以使用dplyr将该计数计为:

library(dplyr)
df %>%
  group_by(Tech) %>%
  summarise(Count = n()) %>%
  right_join(c, by = "Tech") %>%
  mutate(Count = ifelse(is.na(Count), 0, Count))

答案 1 :(得分:0)

一种选择是将df$Tech转换为factorlevel相同的c$Tech,然后使用table来计数频率。

df$Tech <- factor(df$Tech, levels = c$Tech) 
c$count <- table(df$Tech[df$Tech %in% c$Tech])

c
#  Number Tech count
#1      1  A01     0
#2      2  F23     2
#3      3  C27     1
#4      4  C76     1
#5      5  A21     1
#6      6  E17     0