治疗变量创建的指标列

时间:2015-05-13 11:57:30

标签: r

我是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.

1 个答案:

答案 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评论。