1. ホーム
  2. r

[解決済み] ddplyで「Error: length(rows) == 1 is not TRUE」と表示されるのはなぜですか?

2022-02-16 19:15:26

質問

給与計算のようなデータフレームがあります。

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

何が足りないのでしょうか?

解決方法は?

おそらく、以下のように勘違いしているのでしょう。 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 .