I have two data frames. One (df1) contains all columns and rows of interest, but includes missing observations. The other (df2) includes values t
aggregate can do this:
aggregate(. ~ county,
data=merge(df1, df2, all=TRUE), # Merged data, including NAs
na.action=na.pass, # Aggregate rows with missing values...
FUN=sum, na.rm=TRUE) # ...but instruct "sum" to ignore them.
## county year2 year3 year1
## 1 aa 20 30 10
## 2 bb 2 3 1
## 3 cc 10 15 5
## 4 dd 150 200 100