我在一些城市的网站上有一些数据看起来像这样:
CITY STATE LAT LON SCORE
Jacksonville FL 30.328539 -81.65101 5
Jacksonville FL 30.392888 -81.67933 6
Jacksonville FL 30.268572 -81.73987 4
Jacksonville FL 30.348585 -81.49965 3
Lake Worth FL 26.579714 -80.07437 6
Lake Worth FL 26.609226 -80.12874 3
Miami FL 25.813808 -80.2058 3
Miami FL 25.753927 -80.27034 2
Miami FL 25.786326 -80.2029 6
Miami FL 25.817325 -80.19046 8
Miami FL 25.812625 -80.2369 9
Miami FL 25.885739 -80.23264 4
Miami FL 25.962069 -80.14465 5
我想计算每个城市的记录并平均得分。我知道如果城市是独一无二的,我可以用ddply做到这一点,但事实并非如此。那里有一个“迈阿密,KS”或其他东西。所以我需要对合并后的城市和州进行ddply。类似的东西:
ddply(sometable, .(CITY, STATE), summarise,
mean.score=mean(SCORE),
record.count=length(SCORE)
)
有办法吗?我还需要为每个城市抓住一个纬度/经度对。无论哪一个。
答案 0 :(得分:1)
library(plyr)
ddply(data,c(.(CITY),.(STATE)),summarise,count=length(SCORE),mean=mean(SCORE))
或者您可以使用:
library(data.table)
data <- data.table(data)
data[, list(count=length(SCORE), mean=mean(SCORE)), by=c("CITY", "STATE")]
或者这个:
aggregate(SCORE~CITY+STATE,data,function(x) cbind(length(x),mean(x)))
CITY STATE count mean
1 Jacksonville FL 4 4.500000
2 Lake Worth FL 2 4.500000
3 Miami FL 7 5.285714