结合R中给定因子水平的分数

时间:2014-08-25 20:27:22

标签: r dataframe

我在 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}}每个拉链,但我不知道这是否是正确的方法。

2 个答案:

答案 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