【发布时间】:2014-01-10 20:18:24
【问题描述】:
我有一个数据框“samp”,其中有一列(我们称其为“评级”),它具有多个值(假设为以下值之一:“好”、“中”、“坏”。)
我想对其他几个列进行分组,计算“好”、“中”和“差”的频率,并在新列中报告这些频率。 (所以也许 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 此命令将返回逻辑向量的长度,不计算
TRUEs。