我的表格有四列,'年',' doy',' rain'' crain'。专栏年份'范围从1957年至2007年和专栏'范围从1-365(或366)。
我想知道的是:
对于每年(1957-2007),列中有多少行具有非零值' rain&#39 ;?
例如,在1957年,我想知道列中有多少行具有非零值' rain'?
任何帮助将不胜感激!谢谢。
格洛丽亚
答案 0 :(得分:1)
这是一个可重复的例子。请在将来尝试提出这样的问题。
data <- data.frame(sample(1957:2007, 1000, T),
sample(1:365, 1000, T),
round(rnorm(1000, 0, 10)))
names(data) <- c('year', 'day', 'rain')
# there are many ways to do this
# credit to thelatemail - This uses ?aggregate
aggregate(rain ~ year, data=data, FUN=function(x) sum(x != 0))
# This approach uses split and sapply functions
sapply(split(data$rain, data$year), function(x) sum(x != 0))
# Using data.table package
library(data.table)
setDT(data)[, list(rain=sum(rain != 0)), by=year]