簡體   English   中英

因數轉換錯誤

[英]as.factor conversion error

我正在嘗試將數據幀中的三個字符變量轉換為因數,而這三個變量之一始終會出錯。 有問題的變量fund.category具有四個可能的值:“未定義”,“小”,“大型現有”和“大型新建”。 我的代碼如下-我首先使用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

對於其他兩個字符變量(project.number和business.type),相同的代碼未產生任何錯誤。 任何想法為什么這不起作用?

您在先前的聲明中拼寫了“ 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM