删除NA(也ggplot图)

问题描述:

我的数据看起来像删除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

在这里,我已经通过去除它们并在一个单独的数据帧存储所述清洁数据预处理缺少的值。当然,你可以将它保存在同一个数据帧像,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

@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