【发布时间】:2019-07-02 08:46:43
【问题描述】:
我想根据国家变量“iso”和地震虚拟变量“quake”(用于数据集“data”)生成一个虚拟处理变量“treatment”。
我基本上想获得一个虚拟变量“治疗”,如果在我的整个时间范围内(比如说 2000-2018 年)至少有一次 quake==1,我希望该“iso”的所有值都有“治疗”==1,对于所有其他国家“iso”==0。因此,受地震影响的国家的所有观测值都为 1,其他为 0。
我尝试过使用 dplyr,但由于我在 R 方面仍然很年轻,所以我尝试了多次,但我还没有找到解决方案。我看过这个网站和谷歌。
我怀疑解决方案应该是这样的,但我自己无法完成:
data %>%
filter(quake==1) %>%
group_by(iso) %>%
mutate(treatment)
【问题讨论】:
-
您可以使用
data %>% group_by(iso) %>% mutate(treatment = as.integer(any(quake == 1))),如果您在quake中只有1/0 值,data %>% group_by(iso) %>% mutate(treatment = as.integer(any(quake)))也应该可以工作。
标签: r filtering data-manipulation dummy-variable