2017-07-21 40 views
0

鏈接到數據集是一個日期和時間列用電量列沿 https://d396qusza40orc.cloudfront.net/exdata%2Fdata%2Fhousehold_power_consumption.zip爲什麼此代碼在每週的某天進行繪圖?

power1 <- read.csv(file = "c:/datasets/household_power_consumption.txt", stringsAsFactors=F, header = TRUE, 
       sep=";", dec = ".", na.strings="?", col.names = c("date1","time1","Global_active_power", "Global_reactive_power", 
                   "Voltage","Global_intensity","Sub_metering_1","Sub_metering_2", 
                   "Sub_metering_3")) 

power1$date1 <- as.Date(power1$date1, format="%d/%m/%Y") 

power2 <- subset(power1, subset=(date1 >= "2007-02-01" & date1 <= "2007-02-02")) 

datetime1 <- paste(as.Date(power2$date1), power2$time1) 

power2$Datetime <- as.POSIXct(datetime1) 

plot(power2$Global_active_power~power2$Datetime, type="l", ylab="Global Active Power (kilowatts)", xlab="") 

當我運行上面,我得到的圖形像我應該有一週的日子在x軸上,即使我運行summary,head和str(),我也沒有看到關於一週中某天的數據。

我試圖用mutate添加我自己的日欄,但它沒有工作。

當我像下面這樣子集時,它不起作用。它正確子集,我只有我需要的數據,但它不會與日期1列或列一週我通過發生變異

power2 <- subset(power1, subset=(as.Date(date1, format = "%d/%m/%Y") >= "2007-02-01" 
          & as.Date(date1, format = "%d/%m/%Y") <= "2007-02-02")) 

創建的一天,我知道as.Posixct將所有的情節元數據,但我不明白爲什麼當我將日期和時間列組合到它自己的列中時,只有在星期幾graph沒有我問。

當我運行像這樣,合併日期和時間列數據與錯誤的一年

power11 <- read.csv(file = "c:/datasets/household_power_consumption.txt", stringsAsFactors=F, header = TRUE, 
       sep=";", dec = ".", col.names = c("date1","time1","Global_active_power", "Global_reactive_power", 
             "Voltage","Global_intensity","Sub_metering_1","Sub_metering_2", 
             "Sub_metering_3")) 
       #colClasses = c("Date", "character", "factor", "numeric","numeric","numeric","numeric","numeric","numeric")) 
power22 <- subset(power11, subset=(as.Date(date1, format = "%d/%m/%Y") >= "2007-02-01" 
          & as.Date(date1, format = "%d/%m/%Y") <= "2007-02-02")) 
datetime1 <- paste(as.Date(power22$date1), power22$time1) 
power22$Datetime <- as.POSIXct(datetime1) 

回答

0

損壞也許這個鏈接將是有益的: http://earlh.com/blog/2009/07/07/plotting-with-custom-x-axis-labels-in-r-part-5-in-a-series/

添加參數傳送給劇情()call:xaxt ='n'

plot(power2$Global_active_power~power2$Datetime, type="l", ylab="Global Active Power (kilowatts)", xlab="", xaxt='n') 

告訴plot不添加x軸標籤。然後添加一個軸()調用:

axis(side=1, at=power22$Datetime, labels=format(power22$Datetime, '%b-%y')) 

我用「%B-%Y」在這裏,因爲這是我看到我引用的網站上,但您可能需要使用適當的格式代碼,以您的需求。

+0

謝謝,但我一直在尋找一個爲什麼它的工作方式。如果我按照這個確切順序運行第一批代碼,我會得到我需要的答案。但是如果我按照不同的順序運行它,比如說導入文件,子集並在date1和time1仍然是字符列時創建新列,那麼新的datetime1列已損壞年份或0001而不是2007年。如果將date1更改爲日期,然後創建列,然後就可以了。即使我使用as.POSIXct和as.Date來繪製圖表,它也不起作用。只有在劇情運行之前更改日期。 – Alen