为啥我在 ddply 中看到“错误:长度(行)== 1 不正确”?
Posted
技术标签:
【中文标题】为啥我在 ddply 中看到“错误:长度(行)== 1 不正确”?【英文标题】:Why am I seeing "Error: length(rows) == 1 is not TRUE" with ddply?为什么我在 ddply 中看到“错误:长度(行)== 1 不正确”? 【发布时间】:2013-06-07 20:56:44 【问题描述】:我有一个数据框,比如工资单,比如:
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)
“NumRate”实际上是数字:
payroll$NumRate <- as.numeric(payroll$NumRate)
我想通过 PayBasis 了解最高、最低和平均工资。我希望这会起作用:
ddply(payroll, "PayBasis", summarize)
但是我得到了一个错误:Error: length(rows) == 1 is not TRUE
我在这里错过了什么?
【问题讨论】:
【参考方案1】:可能是因为您将summarize
误认为summary
(在这种情况下不会像您期望的那样工作)。你可能想要:
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
请务必仔细查看?summarize
和?ddply
中的示例。
【讨论】:
【参考方案2】:它也可以是plyr
库。尽量不要加载它,或者,如果您需要它,请注意是否在其他库之前或之后加载它,例如 dplyr
或 tidyverse
会自动启动 dplyr
【讨论】:
【参考方案3】:要确保您使用的是正确的命令,请使用dplyr::summarize
。你可以猜到有很多库使用“summarizes”命令
【讨论】:
以上是关于为啥我在 ddply 中看到“错误:长度(行)== 1 不正确”?的主要内容,如果未能解决你的问题,请参考以下文章
如何使在 ddply 中创建的对象在函数外部可用(在全局环境中)?