我在 R 中有一个3列多行的数据框,如下所示:
Zip Yes/No Likelihood-of-Yes/No
75229 1 0.83
75229 0 0.4
28277 1 0.6
每个邮政编码都有很多条目。我想将这个数据框重新整理成一个表格,给出每个邮政编码的平均分数,但我不知道如何。在apply
成为mean
因素之后,我已经考虑Zip
{{1}}每个拉链,但我不知道这是否是正确的方法。
答案 0 :(得分:1)
如果您更喜欢将data.frame作为输出,我会发现aggregate
是最好的方法:
dat <- read.table(header=TRUE, text=
"Zip YesNo LikelihoodYesNo
75229 1 0.83
75229 0 0.4
28277 1 0.6")
datnew <- aggregate(YesNo ~ Zip, data=dat, sum)
datnew$LikelihoodYesNo <- aggregate(LikelihoodYesNo ~ Zip, data=dat, mean)[,2]
在上面的代码中,我重命名了你的变量。在变量名中避免使用字符/
通常是个好主意。
结果:
> datnew
Zip YesNo LikelihoodYesNo
1 28277 1 0.600
2 75229 1 0.615
答案 1 :(得分:0)
这是你想要的吗?
df = read.table(text = "Zip Yes/No Likelihood-of-Yes/No
75229 1 0.83
75229 0 0.4
28277 1 0.6", header = T)
by(df, df$Zip, function(x) mean(x$Lik))
df$Zip: 28277
[1] 0.6
--------------------------------------------------------------------------------------------------
df$Zip: 75229
[1] 0.615