使用cast()的意外结果

时间:2011-06-15 14:07:06

标签: r casting reshape

我正在尝试使用Reshape库中的cast()来投射数据,但是我得到了意想不到的结果。我从一个包含大量数据的数据框开始,all_ia[all_ia$Student.ID == 102050,]返回

66     102050        1      Mar
67     102050        0      Dec
68     102050        1      May
69     102050        0      Feb

变量分别是Student.ID,Proficiency.Level和testmonth。

有一些学生.ID在5月份,9月。

当我运行all_ia.cast <- cast(all_ia, Student.ID ~ testmonth, value=c("Proficiency.Level"), fill=c("NA"))然后运行all_ia.cast[all_ia.cast$Student.ID == 102050,]时,我会得到意想不到的结果:

1325    102050    1    1    1    1    NA

其中变量分别是Student.ID,Dec,Feb,Mar,May,Sep。当我运行cast() Aggregation requires fun.aggregate: length used as default时会发出警告。

我的问题是,为什么fun.aggregate需要,为什么演员表中的Dec和Feb变量等于1而不是0?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

这是因为您的投射公式Student.Id ~ tesmonth不包含data.frame中的所有变量,即不包含Proficiency.Level

这通常意味着转换必须执行聚合,聚合公式默认为length

您似乎有一个特殊情况,每个学生的月和熟练程度之间存在一对一的关系。因此,您应该选择保留数据的聚合函数,例如取mean以下内容应该有效:

cast(all_ia, Student.ID ~ testmonth, value=mean("Proficiency.Level"))

您不提供测试数据,因此未对此进行测试。