【发布时间】:2018-06-07 10:27:47
【问题描述】:
请考虑以下事项。
背景
在data.frame 中,我有患者 ID (id),患者入院的日期 (day),他们当天收到的诊断活动代码 (code),该活动的价格 (price) 和该活动的频率 (freq)。
codeb 和c 的活动是同时注册的,但含义大致相同,不应重复计算。
问题
我想要的是:如果code“b”和“c”注册同一天,code“b”应该被忽略。
data.frame 的示例如下所示:
x <- data.frame(id = c(rep("a", 4), rep("b", 3)),
day = c(1, 1, 1, 2, 1, 2, 3),
price = c(500, 10, 100, rep(10, 3), 100),
code = c("a", "b", "c", rep("b", 3), "c"),
freq = c(rep(1, 5), rep(2, 2))))
> x
id day price code freq
1 a 1 500 a 1
2 a 1 10 b 1
3 a 1 100 c 1
4 a 2 10 b 1
5 b 1 10 b 1
6 b 2 10 b 2
7 b 3 100 c 2
因此,患者“a”第 1 天的费用将是 600 而不是 610,因为我可以使用以下公式计算:
x %>%
group_by(id, day) %>%
summarise(res = sum(price * freq))
# A tibble: 5 x 3
# Groups: id [?]
id day res
<fct> <dbl> <dbl>
1 a 1. 610.
2 a 2. 10.
3 b 1. 10.
4 b 2. 20.
5 b 3. 200.
可能的方法
当“c”出现在同一天时,我删除观察code“b”,或者如果code“c”出现在code“b”中,我将freq设置为0同一天。
到目前为止,我对ifelse 和mutate 的所有尝试都失败了。
非常感谢每一个帮助。非常感谢您!
【问题讨论】: