0

データ フレーム内の 3 つの文字変数を係数に変換しようとしていますが、3 つのうちの 1 つでエラーが発生し続けます。問題のある変数、fund.category には、"未定義"、"小規模"、"大規模な既存"、"大規模な新築" の 4 つの値があります。私のコードは次のとおりです-最初にXLConnectを使用してExcelシートからデータフレームを読み取り、次に不要な変数を削除して、保持していた変数の名前を変更しました:

a.projects <- readWorksheet(wb, sheet = "ProjectsDetail")
a.projects.2 <- a.projects[c("ProjectNumber", "BusinessType", "Fund.Category")]
a.projects.2 <- rename(a.projects.2,
                       c("ProjectNumber" = "project.number",
                         "BusinessType" = "business.type",
                         "Fund.Category" = "fund.catetgory"))
str(a.projects.2)
a.projects.2$project.number <- as.factor(a.projects.2$project.number)
a.projects.2$business.type <- as.factor(a.projects.2$business.type)   
a.projects.2$fund.category <- as.factor(a.projects.2$fund.category)  

以下は、因数変換を試みる前に生成された a.projects.2 の構造です。

'data.frame':   4291 obs. of  3 variables:
 $ project.number: chr  "APS-10-02825" "APS-10-02826" "APS-10-02876" "APS-10-03134" ...
 $ business.type : chr  "Office" "Office" "Process Industrial" "K-12 School" ...
 $ fund.catetgory: chr  "Undefined" "Undefined" "Large Existing" "Large New Construction" ...

そして、コンソールからのエラーは次のとおりです。

a.projects.2$fund.category <- as.factor(a.projects.2$fund.category)

Error in `$<-.data.frame`(`*tmp*`, "fund.category", value = integer(0)) : 
replacement has 0 rows, data has 4291

同じコードで、他の 2 つの文字変数 (project.number と business.type) ではエラーは発生しませんでした。これが機能しない理由はありますか?

4

1 に答える 1

4

以前の声明で「fund.category」のスペルが間違っています。

a.projects.2 <- rename(a.projects.2,
                       c("ProjectNumber" = "project.number",
                         "BusinessType" = "business.type",
                         "Fund.Category" = "fund.catetgory"))

タイプミスを修正すると、幸せになるはずです:-)


エラーを理解するには、

a.projects.2$fund.category戻り値NULL

as.factor(NULL)戻り値factor(0)

エラーが発生するのfactor(0)は、に割り当てるときです。a.projects.2$fund.category

Error in `$<-.data.frame`(`*tmp*`, "fund.category", value = integer(0)) : 
replacement has 0 rows, data has 4291
于 2012-09-18T22:57:33.827 に答える