2017-10-15 81 views
0

我有這個CSV數據集,我需要創建一個函數來執行數據清理,但仍然無法正常工作,而且我的想法已經過時。數據清理和表中的拼寫錯誤

以下是Google雲端硬盤上的dataset

這是我需要做的:

  • 糾正可能的輸入
  • 刪除不相關的數據(僅在奧克蘭和惠靈頓的房屋被認爲是)
  • 刪除離羣值,例如負值區,負功耗,非常高的地區,非常高的功率消耗

到目前爲止,這是我做的代碼:

# Reading data set 
installed.packages("lubridate") 
library(lubridate) 

# Reading data set 
power <- read.csv("data set 6.csv", na.strings="") 

# SUBSETTING 
Area <- as.numeric(power$Area) 
City <- as.character(power$City) 
P.Winter <- as.numeric(power$P.Winter) 
P.Summer <- as.numeric(power$P.Summer) 

#Data Cleaning 
levels(power$City) <- c(levels(power$City), "Auckland") 
power$City[power$City == "Ackland"] <- "Auckland" 

#Removing irrelevant data (only houses in Auckland and Wellington are considered) 
power$City <- power$City[-c(496,499), ] 

後,我運行此代碼,拼錯的單詞(「阿克蘭「)不會像我預期的那樣改變爲奧克蘭。 這突出顯示的行如在此圖像中應該改變奧克蘭: enter image description here

+0

問題尋求幫助調試(「爲什麼不是這個代碼的工作?」)必須包括所期望的行爲,一個特定的問題或錯誤,並重現它在問題本身所需要的最短的代碼。沒有明確問題陳述的問題對其他讀者無益。請參閱:如何創建最小,完整和可驗證示例。 –

+0

查看函數'?droplevels'。 –

+0

@MarcusMüller我希望我上傳能給什麼,我期待 – Nelson

回答

2

爲了解決您的問題倒塌因子水平「阿克蘭」和「奧克蘭」(也假設你想要權力$市是/仍然是一個因子):

一種方法是將levels()函數傳遞給一個命名列表,每個名稱都是所需級別的正確標籤(在您的情況下,數據集中城市的正確名稱)請參閱: Cleaning up factor levels (collapsing multiple levels/labels)作爲一個例子。

然而,正如擡起頭,看在你的數據集的阿克蘭和奧克蘭字符串後面的額外空間:

# first view classes to confirm power$City is a factor 
    > apply(power, class)  # --> or is.factor(power$City) will work to 
     Area  City P.Winter P.Summer 
    "numeric" "factor" "numeric" "numeric" 

    # Notice spaces behind "Ackland " and "Auckland " 
    > levels(power$City) 
    [1] "Ackland " "Auckland " "Sydney"  "Wellington" 

傳遞命名列表的水平()的作品,一旦你佔了空間:

levels(power$City) <- list(Auckland = c("Ackland ", "Auckland "), Sydney = c("Sydney"), Wellington = c("Wellington")) 

    # Now only three factor levels (notice this also took care of the extra spaces) 
     > levels(power$City) 
    [1] "Auckland" "Sydney"  "Wellington" 

你現在有3個級別,而不是4,注意這水平還拿了空間的護理標籤

子集只包括relevan牛逼城市

 subpower <- power[which(power$City == c("Auckland", "Wellington")), ] 

你也可以子集,以排除負值,極值等..

注:這裏我唯一真正的貢獻是捕捉多餘的空格,來解決自己我發現Aaron's類似的問題答案非常有幫助。希望這可以幫助!

+0

是的額外的空間是這個問題的根本問題之一 – Nelson