У меня есть dataframe частот слов, таких как:Рассчитайте пропорции группы мудр из dataframe
df <- data.frame(
Predictor = c("for","of","as","for","for","as","of","of","as","for"),
ToPredict = c("sure","course","much","him","keeps","far","them","this","an","petes"),
Freq = c(53,32,21,17,13,5,3,2,2,1))
Я хочу, чтобы вычислить новый столбец, доля, что каждый ToPredict составляет от каждого предиктора.
Так, в приведенном выше примере, значения для этого нового столбца будет:
df$Props = c(0.631,0.865,0.75,0.202,0.155,0.179,0.081,0.054,0.071,0.012)
На данный момент у меня есть dataframe сумм:
sums <- aggregate(df$Freq, by=list(Category=df$Predictor), FUN=sum)
и я попытался:
df$Props <- with(df, Freq/sums$x[which(sums$Category == Predictor)])
Очевидно, что это не работает. Но я не знаю, что будет. Любая помощь очень ценится.
У меня закрадывается подозрение, что это дубликат вопрос, но 'с (Д.Ф., пр (Freq, Предсказатель, FUN = prop.table))' должны сделай это. – thelatemail
Возможные дубликаты кандидатов, хотя ответы не велики - http://stackoverflow.com/questions/15009011/calculate-proportions-within-subsets-of-a-data-frame и http://stackoverflow.com/questions/26885819/calculate-ratio-by-groups-for-a-subset-of-the-dataset – thelatemail
Вполне возможно, что это так. Тем не менее, я не мог найти ответ с довольно большим количеством поисков. Ваше решение работает. Спасибо! – davo1979