删除R中的ggplot检测到的缺失值

问题描述

我让这个question知道如何在同一图中绘制许多图形。遵循我喜欢并接受的答案,可以使用ggplot()函数

现在使用ggplot(),我收到以下消息,通知您已删除该图的缺失值:

Warning message:
Removed 33 row(s) containing missing values (geom_path).

从产生的绘图和可视化效果来看,ggplot()删除了33行之后,我对数据感到满意。

我知道如何删除NA的行,但是在这里我不明白是否ggplot()删除了至少有一个变量存在NA的行 OR 删除了所有变量都是NA的行,知道我有7个变量,并且有一些行的所有变量都完全不适用,而许多行仅包含某些变量的不适用。

问题:尽管该图的行已被删除,但如何从数据中完全删除“检测到的33行”这些行呢?

解决方法

如果输入是x和y列,但

ggplot 会删除用作 ggplot 的输入 aes 的列的NA不适用的行也具有y列,如果x或y具有NA,则只会删除行。

这里是一个例子:

library(ggplot2)

x <- head(mtcars)

# add NA to some column we don't use for ggplot
x$am[ 1 ] <- NA

ggplot(x,aes(cyl,mpg)) + geom_point()
# no warnings

# now add NA to column that we use for plotting
x$cyl[ 1 ] <- NA

ggplot(x,mpg)) + geom_point()
# Warning message:
#   Removed 1 rows containing missing values (geom_point). 

# to avoid that warning,we can explicitly set it to remove NA
ggplot(x,mpg)) + geom_point(na.rm = TRUE)
# no warnings

要从数据中删除行,请检查所选列是否具有NA:

x_clean <- x[ !(is.na(x$cyl) | is.na(x$mpg)),]
ggplot(x_clean,mpg)) + geom_point()
# no warnings

编辑1:要基于注释应用数据,请尝试以下操作,请参见filter

Data <- bind_rows(...)
Data %>%
  mutate(data = paste0('Data',data)) %>%
  pivot_longer(-c(data,Time)) %>%
  filter(!(is.na(Time) | is.na(value))) %>% 
  ggplot(aes(x = factor(Time),y =value),group = name,color = name))+
  geom_line()+
  facet_wrap(.~data,scales = 'free',ncol = 1) +
  xlab('Time')

编辑2:要“知道”哪些数据正在ggplot中,为什么不将过滤后的干净数据作为单独的对象而不是管道进行保存,请参阅:

Data <- bind_rows(...)
cleanData <- Data %>% 
  mutate(data = paste0('Data',Time)) %>%
  filter(!(is.na(Time) | is.na(value)))
  
ggplot(cleanData,aes(x = factor(Time),color = name)+
  geom_line()+
  facet_wrap(.~data,ncol = 1) +
  xlab('Time')
,

这些行可能具有NA值,或者它们可能超出您设置的轴限制的范围。 ggplot()在两种情况下都会产生相同的警告。这是后者的示例。

这是内置的mtcars数据集。请注意,没有丢失的值:

mtcars
                     mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
Valiant             18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
Merc 240D           24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
Merc 230            22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
Merc 280            19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
Merc 280C           17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
Fiat 128            32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    1
Honda Civic         30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
Toyota Corolla      33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
Toyota Corona       21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    1
Dodge Challenger    15.5   8 318.0 150 2.76 3.520 16.87  0  0    3    2
AMC Javelin         15.2   8 304.0 150 3.15 3.435 17.30  0  0    3    2
Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
Pontiac Firebird    19.2   8 400.0 175 3.08 3.845 17.05  0  0    3    2
Fiat X1-9           27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
Porsche 914-2       26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    2
Lotus Europa        30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
Ferrari Dino        19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
Volvo 142E          21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    2

如果我构建以下图,则会收到有关缺少值的行的ggplot警告。

library(ggplot2)
ggplot(mtcars,aes(x = wt,y = qsec)) + 
  geom_point() +
  scale_x_continuous(limits = c(2,4)) +
  scale_y_continuous(limits = c(16,22))
Warning message:
Removed 14 rows containing missing values (geom_point).

enter image description here

具有“缺失值”的14行是数据超出轴限制范围的14行。他们在这里。

library(dplyr)
mtcars %>%
  filter(wt < 2 | wt > 4 | qsec < 16 | qsec > 22)
                     mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
Merc 230            22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
Honda Civic         30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    2
Toyota Corolla      33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    1
Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
Fiat X1-9           27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    1
Lotus Europa        30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    2
Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
Ferrari Dino        19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6
Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8

在尝试从数据中删除“缺失值”之前,请检查绘图参数是否排除了某些数据。