我有一些事件的数据,如:
Year, Date, killed_min, killed_max, Injured_min, Injured_max
2000 4/3/2000 34 54 31 39
2000 6/4/2000 24 34 11 19
...
我面临两个主要问题:
我想通过参数来分组这些数据,例如年死亡或受伤的人等等。
答案 0 :(得分:3)
data.table
包非常适合第一个问题。 (data.table
是data.frame
的进化版本,具有更多功能和速度。)
对于第二个问题,定义了一整类函数:na.rm
,na.action
等。
这是一个玩具示例:
library(data.table)
set.seed(12345)
dt <- data.table(
Year= sample(1980:2014,1000,replace=T),
Date= sample(1:10000, 1000, replace=T),
killed_min= sample(c(15:150,NA), 1000, replace=T),
killed_max=sample(c(NA,250:1500), 1000, replace=T),
Injured_min=sample(150:250, 1000, replace=T),
Injured_max=sample(500:4000, 1000, replace=T))
dt # Note the missing value in row 996
dt[,list(killed_min=sum(killed_min,na.rm=TRUE),
killed_max=sum(killed_max,na.rm=TRUE)),by=Year]
希望这会有所帮助!!
或者,您也可以在.SDcols
lapply
使用j
,如下所示:
dt[, lapply(.SD, sum, na.rm=TRUE), by=Year,
.SDcols=c("killed_min", "killed_max")]