【问题标题】: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

我在这里错过了什么?

【问题讨论】:

    标签: r plyr summary


    【解决方案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 库。尽量不要加载它,或者,如果您需要它,请注意是否在其他库之前或之后加载它,例如 dplyrtidyverse 会自动启动 dplyr

      【讨论】:

        【解决方案3】:

        要确保您使用的是正确的命令,请使用dplyr::summarize。你可以猜到有很多库使用“summarizes”命令

        【讨论】:

          猜你喜欢
          • 2014-12-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-04-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多