Why am I seeing “Error: length(rows) == 1 is not TRUE” with ddply?

↘锁芯ラ 提交于 2019-12-05 23:45:20

问题


I have a data frame, say payroll, like:

payroll <- read.table(text="
AgencyName          Rate             PayBasis     Status    NumRate
HousingAuthority    $26,843.00   Annual           Full-Time 26843.00
HousingAuthority    $14,970.00   ProratedAnnual   Part-Time 14970.00
HousingAuthority    $26,843.00   Annual           Full-Time 26843.00
HousingAuthority    $14,970.00   ProratedAnnual   Part-Time 14970.00
HousingAuthority    $13.50           Hourly           Part-Time 13.50
HousingAuthority    $14,970.00   ProratedAnnual   Part-Time 14970.00
HousingAuthority    $26,843.00   Annual           Full-Time 26843.00", header = TRUE)

The "NumRate" is actually numeric:

payroll$NumRate <- as.numeric(payroll$NumRate)

And I'd like to get a know the max, min and mean salaries by PayBasis. I expect this to work:

ddply(payroll, "PayBasis", summarize)

But instead I'm getting an error: Error: length(rows) == 1 is not TRUE

What am I missing here?


回答1:


Probably because you've mistaken summarize for summary (which won't work like you expect in this context). You probably wanted:

ddply(payroll, "PayBasis", summarize,mx = max(NumRate),mn = min(NumRate),avg = mean(NumRate))
        PayBasis      mx      mn     avg
1         Annual 26843.0 26843.0 26843.0
2         Hourly    13.5    13.5    13.5
3 ProratedAnnual 14970.0 14970.0 14970.0

And be sure to look more carefully at the examples in ?summarize and ?ddply.




回答2:


It could also be the plyr library. Try either not to load it, or, if you need it be careful whether you load it before or after other libraries such as dplyr, or tidyverse which automatically fires up the dplyr



来源:https://stackoverflow.com/questions/17053764/why-am-i-seeing-error-lengthrows-1-is-not-true-with-ddply

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!