【发布时间】:2016-08-16 19:24:27
【问题描述】:
我有一个数据集,其中包含多年、地区、季度和类型的事件发生。示例:
REGION Prov Year Quarter Type Hit Miss
xxx yy 2008 4 Snow 1 0
xxx yy 2009 2 Rain 0 1
我定义了变量来检查感兴趣的列:
syno.h <- data$Type
quarter.number<-data$Quarter
syno.wrng<- data$Type
我想获得每种类型的点击量,以及所有数据的季度。鉴于 Hits 是 0 或 1,那么我第一次尝试使用 tapply 的简单 sum() 函数。
tapply(syno.h, list(syno.wrng, quarter.number), sum)
返回:
1 2 3 4
ARCO NA NA NA 0
BLSN 0 NA 15 74
BLZD 4 NA 17 54
FZDZ NA NA 0 1
FZRA 26 0 143 194
RAIN 106 126 137 124
SNOW 43 2 215 381
SNSQ 0 NA 18 53
WATCHSNSQ NA NA NA 0
WATCHWSTM 0 NA NA NA
WCHL NA NA NA 1
WIND 47 38 155 167
WIND-SUETES 27 6 37 56
WIND-WRECK 34 14 44 58
WTSM 0 1 7 18
对于某些在给定季度没有出现的类型,tapply 有时会返回 NA 而不是零。我已经检查了很多次数据,我确信它是干净的。不是 NA 的值也是正确的。
如果我只使用 sum() 检查返回 NA 和 tapply 的类型/季度组合,我会得到我期望的值:
sum(syno.h[quarter.number==3&syno.wrng=="BLSN"])
[1] 15
> sum(syno.h[quarter.number==1&syno.wrng=="BLSN"])
[1] 0
> sum(syno.h[quarter.number==2&syno.wrng=="BLSN"])
[1] 0
> sum(syno.h[quarter.number==2&syno.wrng=="ARCO"])
[1] 0
看来我的问题在于我如何将 tapply 与 sum 一起使用,而不是数据本身。
有人对可能出现的问题有什么建议吗?
提前致谢
【问题讨论】:
-
syno.wrng是NULL因为你定义它时的拼写错误。而且,sum对因子没有意义。一个可重现的例子会很棒。 -
这只是我的代码示例,在实际代码中 syno.wrng 很好。我检查了所有输入,它们都有预期值。我很难举出一个可重复的例子,因为我无法分享我正在使用的数据。