首页 > 解决方案 > 如何使用 R 中的计数函数(如 NROW)过滤 mutate() 中的数据?

问题描述

我有一个包含列doc_idfeats(两个字符向量)的数据框。我正在尝试创建一个新列,其中包含列n_rel_prn中值的总出现'PronType=Rel'次数。featsdoc_id

我不能使用 filter(),因为它会过滤掉我需要的所有其他数据(即feats不是的值'PronType=Rel'),否则它就可以了。(这是代码片段:)

tcorpus %>% group_by(doc_id) %>%
  filter(feats=='PronType=Rel') %>%
  mutate(n_rel_prn = n())

基本上,我需要像下面的代码一样工作的东西(除了实际工作——这显然不是):

tcorpus %>% group_by(doc_id) %>%
  mutate(n_rel_prn = NROW(feats == 'PronType=Rel'))

有没有办法可以计算'PronType=Rel'观察次数(按 doc_id 分组)并将这些总数添加到新列中?(我假设至少group_by %>% mutate()是要走的路。)

标签: rdplyr

解决方案


你快到了。尝试这个:

tcorpus %>% group_by(doc_id) %>% mutate(n_rel_prn = sum(feats == 'PronType=Rel'))

推荐阅读