2015-05-13 30 views
2

我對R相對較新,在添加指標列時遇到了一些麻煩。在圖片中,您可以看到有一列標有「lawchange」的欄目,我想創建一個指示欄,指示州是否發生了這種法律變更(處理欄指示符)。從本質上講,如果某個州的任何地方的lawchange專欄中都有「1」,我希望整個州都有一個「已處理」的指標欄,說明它是「真」,如果沒有「1」在該州的lawchange欄中的任何地方,「已處理」列都將顯示爲「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

使用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] 

如果你喜歡就地修改一定要檢查@大衛阿倫堡紀念NT。

+0

我收到以下消息:ErrorMethod(「group_by_」): 沒有適用於'group_by_'的方法應用於類「function」的對象 –

+0

您應該用您的實際名稱替換出現的兩個'df'變量。 – zero323

+0

非常感謝!我非常感謝幫助! –