2017-02-16 9 views
1

からは、私のような単語の出現頻度のデータフレームを持っています。計算比率グループ単位のデータフレーム

ので、上記の例では、この新しい列の値は次のようになります。

df$Props = c(0.631,0.865,0.75,0.202,0.155,0.179,0.081,0.054,0.071,0.012) 

瞬間、私は和のデータフレームがあります

sums <- aggregate(df$Freq, by=list(Category=df$Predictor), FUN=sum) 

を、私が試してみました:

df$Props <- with(df, Freq/sums$x[which(sums$Category == Predictor)]) 

明らかにこれは機能しません。しかし、私は何をするのか分からない。どんな助けでも大歓迎です。

thelatemailパー
+1

私はこれが重複質問ですが、 'と(DF、AVE(FREQ、予測、FUN = prop.table))ひそかな疑いを持っている必要があります'それをやる。 – thelatemail

+0

可能な重複候補は、答えはあまり大きくはありませんが - http://stackoverflow.com/questions/15009011/calculate-proportions-within-subsets-of-a-data-frameとhttp://stackoverflow.com/questions/26885819/calculate-a-subsets of the-dataset – thelatemail

+0

それは可能性が高いです。しかし、私はかなりの検索で答えを見つけることができませんでした。あなたのソリューションは機能します。ありがとうございました! – davo1979

答えて

1
a=aggregate(df$Freq, by=list(df$Pred), FUN=sum) 
a1=a[,2] 
names(a1)=as.character(a[,1]) 
df$Props=df$Freq/a1[df$Pred] 
+0

これも機能します。そして私には直感的です(ただし、余分なベクトルが生成されるので、私はより遅いと想像していました)。それでも、私は(thelatemailの)答えを受け入れることはできません(少なくともすぐには)。これはうまくいくでしょう。 – davo1979

1

with(df, ave(Freq, Predictor, FUN=prop.table)) 
関連する問題