我是R的新手,在添加我需要的指标列时遇到了一些麻烦。在图片中,您可以看到标有" lawchange"的列。我想建立一个指标栏,告诉该州是否发生了这种法律变更(治疗栏指标)。
从本质上讲,如果有一个" 1"在任何地方的法律变更专栏中,我希望整个州都有一个指标栏"对待"说这是真的,如果没有" 1"在该州的法律变更专栏的任何地方,“#34;对待"列读为FALSE。
year state agegr mrate lawchange
1 1970 1 15-17 yrs 104.88168 0
2 1970 1 18-20 yrs 153.87047 0
3 1970 1 21-24 yrs 172.95686 0
4 1971 1 15-17 yrs 109.53251 0
5 1971 1 18-20 yrs 161.53520 0
6 1971 1 21-24 yrs 178.49515 0
7 1972 1 15-17 yrs 120.06564 0
8 1972 1 18-20 yrs 159.21349 0
9 1972 1 21-24 yrs 177.87250 0
10 1973 1 15-17 yrs 113.52836 0
11 1973 1 18-20 yrs 140.88599 0
12 1973 1 21-24 yrs 149.36366 0
13 1974 1 15-17 yrs 97.80592 0
14 1974 1 18-20 yrs 143.09831 0
15 1974 1 21-24 yrs 168.53503 0
16 1975 1 15-17 yrs 90.10225 0
17 1975 1 18-20 yrs 147.94107 1 <-- ** see note
** since this state has a 1 in the lawchange column I would
like a treatment column to show TRUE for the entire state.
答案 0 :(得分:1)
使用dplyr
:
library(dplyr)
df %>%
group_by(state) %>%
summarise(treated=sum(lawchange) > 0) %>%
right_join(df, by='state')
修改强>:
data.table
这样的事情应该有效:
dt[, c(.SD, treated = sum(lawchange) > 0), by=state]
如果您更喜欢就地修改,请务必查看@David Arenburg评论。