【发布时间】:2021-01-13 17:21:37
【问题描述】:
我有两个具有以下结构的表。表 1,我将其称为汇总表,是一个包含计数的类别值列表:
| Category | Value | Count |
|---|---|---|
| Cat1 | Val1 | |
| Cat1 | Val2 | |
| Cat1 | Val3 | |
| Cat2 | Val1 | |
| Cat2 | Val2 | |
| Cat3 | Val1 | |
| Cat3 | Val2 |
summary <- data.frame(Category = c('Cat1', 'Cat1', 'Cat1', 'Cat2', 'Cat2', 'Cat3', 'Cat3'),
Value = c('Val1', 'Val2', 'Val3', 'Val1', 'Val2', 'Val1', 'Val2'),
Count = c(NA,NA,NA,NA,NA,NA,NA))
我想用从表 2 收集的计数填充此表,我们将其称为原始数据表,其结构如下:
| Entity | Cat1 | Cat2 | Cat3 |
|---|---|---|---|
| Ent1 | Val1 | Val1 | Val2 |
| Ent2 | Val1 | Val1 | Val2 |
| Ent3 | Val2 | Val2 | Val1 |
| Ent4 | Val2 | Val1 | Val2 |
| Ent5 | Val3 | Val1 | Val2 |
| Ent6 | Val3 | Val1 | Val1 |
| Ent7 | Val3 | Val2 | Val2 |
rawdata <- data.frame(Entity = c('Ent1', 'Ent2', 'Ent3', 'Ent4', 'Ent5', 'Ent6', 'Ent7'),
Cat1 = c('Val1', 'Val1', 'Val2', 'Val2', 'Val3', 'Val3', 'Val3'),
Cat2 = c('Val1', 'Val1', 'Val2', 'Val1', 'Val1', 'Val1', 'Val2'),
Cat3 = c('Val2', 'Val2', 'Val1', 'Val2', 'Val2', 'Val1', 'Val2'))
我想用每个类别和值对的适当计数填充汇总表中的“计数”列。以编程方式,我想做的是有一个计数器,通过原始数据表并更新每个值的计数。我认为这在 R 中效率非常低。我想我会做的是过滤值,但是因为列名没有被评估为变量,所以我不知道如何做到这一点。
我已经尝试过(我认为我想要的东西是):
library(dplyr)
summary$Count <- nrow(rawdata %>% filter(get(summary$Category) == get(summary$Value)))
但是,这不起作用。如何让过滤器从另一个表中获取值?
【问题讨论】:
标签: r filter dplyr multi-table