2017-08-12 249 views
0

我的數據看起來像刪除NA(也ggplot圖)

Year  ... Growth_Rate 
2011    NA 
2012   2.0 
2013  ... 3.2 
2014   -2.0 
2015   1.3 
2016  ... 1.9 


ggplot(ridership, aes(Year, Bronx$Growth_Rate, group=1, na.rm=TRUE))+ 
    geom_bar(stat= "identity", aes(fill=Year)) + 
    scale_y_continuous("Ridership Growth Rate", 
    labels = percent_format())+ geom_point(col='black', size=0.7) + 
    geom_line(col='black', size=0.3) + 
    ggtitle("Ridership Change in Bronx") + 
    theme(plot.title = element_text(hjust = 0.5)) 

這是曲線圖。我想2011年度去除


enter image description here

+1

你可以篩選數據,例如:ggplot(dplyr ::濾波器(載客量,年= 「2011年度」 is.na(年)),AES(年! ,... –

回答

1

如何將下面的代碼。

方法1

在這裏,我已經通過去除它們並在一個單獨的數據幀存儲所述清潔數據預處理缺少的值。當然,你可以將它保存在同一個數據幀像,dat<- na.omit(subset(dat, select = c(Year, Growth_Rate))) `

# create some dummy data 
Year<- c(2011:2016) 
Growth_Rate<- c(NA,2.0,3.2,-2.0,1.3,1.9) 
dat<- data.frame(Year, Growth_Rate, stringsAsFactors = FALSE) 

# remove missing values 
dat.clean<- na.omit(subset(dat, select = c(Year, Growth_Rate))) 

# plot it 

ggplot(data = dat, aes(Year,Growth_Rate))+ 
    geom_bar(stat = "identity", na.rm = TRUE)+ 
    geom_line(col='black', size=0.3)+ 
    ggtitle("Ridership Change in Bronx") + 
    theme(plot.title = element_text(hjust = 0.5)) 

在我的角度來看,方法1是容易的,如預期,但增加了一個臨時變量來保存清理數據的開銷工作。

方法2

通過使用coord_cartesian()。在我看來,對於這種方法最好的用例是在你希望限制x軸值的時候。

library(ggplot2) 
# create some dummy data 
Year<- c(2011:2016) 
Growth_Rate<- c(NA,2.0,3.2,-2.0,1.3,1.9) 
dat<- data.frame(Year, Growth_Rate, stringsAsFactors = FALSE) 

# plot it 
ggplot(data = dat, aes(Year,Growth_Rate))+ 
    geom_bar(stat = "identity", na.rm = TRUE)+ 
    geom_line(col='black', size=0.3)+ 
    coord_cartesian(xlim = c(2012, 2016))+ 
    ggtitle("Ridership Change in Bronx") + 
    theme(plot.title = element_text(hjust = 0.5)) 

與方法2的問題,是當被執行時,會產生像警告消息,Warning messages: 1: Removed 1 rows containing missing values (position_stack). 2: Removed 1 rows containing missing values (geom_path).

方法3

我與Method 1怨恨,它被創建額外的臨時變量存儲清理的數據。所以我提出方法3;

ggplot(data = na.omit(subset(dat, select = c(Year, Growth_Rate))), 
     aes(Year,Growth_Rate))+ 
    geom_bar(stat = "identity", na.rm = TRUE)+ 
    geom_line(col='black', size=0.3)+ 
    ggtitle("Ridership Change in Bronx") + 
    theme(plot.title = element_text(hjust = 0.5)) 

我認爲,Method 3解決了這兩個my grudge還有OP question

0

@Ashish的答案是好的,如果你只是不想陰謀NA值。

但是,您可能希望清理數據並稍後在不使用NA值的情況下重新使用它。在這裏你去使用is.na一些過濾:

Year_No_NA <- Year[!is.na(Bronx$Growth_Rate)] 
Growth_Rate_No_NA <- Bronx$Growth_Rate[!is.na(Bronx$Growth_Rate)] 
+1

感謝您的建議,它作爲「思想的飼料」,同樣我也更新了我的答案。 – Ashish