У меня есть dataframe «samp» со столбцом (назовем его «рейтинг»), который принимает несколько значений (скажем, одно из следующего: «хороший», «средний» »,« bad ».)Выполнение подсчета для столбца кадра данных в R
Я хотел бы сгруппировать по нескольким другим столбцам и подсчитать частоту« хорошего »,« среднего »и« плохого »и сообщить эти частоты в новых столбцах. (Так что, может быть, col1 в год кино, col2 это жанр, а затем должна быть больше трех колонок, рассказывающих о том, сколько каждом типе рейтинга были за каждый год и жанр.)
ddply(samp,c("col1","col2"), summarize,
good=table(samp$rating)["good"],
medium=table(samp$rating)["medium"],
bad=table(samp$rating)["bad"])
Проблема заключается в том (я подумайте), что функции, которые я определяю, не относятся к группам, которые выводит ddply, это просто постоянные функции samp. Как я могу определить здесь функции, чтобы они были функциями групп?
Я попытался с помощью анонимной функции:
ddply(samp,c("col1","col2"), summarize,
good=function(df)table(df$rating)["good"],
medium=function(df)table(df$rating)["medium"],
bad=function(df)table(df$rating)["bad"])
Я не могу получить его работу, хотя. Я думаю, что ошибка, которую я получил от этого, -
Error in output[[var]][rng] <- df[[var]] :
incompatible types (from closure to logical) in subassignment type fix
Так что положите его на меня. Какое смехотворно простое решение, которое не появилось, когда я ошибался, пытаясь использовать комбинации ddply и table 948506? Спасибо.
Вы просто хотите подсчет? как насчет 'length (samp $ rating == 'good')' – rawr
@rawr Эта команда вернет длину логического вектора и не засчитает 'TRUE'. –
означает sum, d'oh – rawr