Home > database >  Create mean value plot without missing values count to total
Create mean value plot without missing values count to total

Time:10-25

Using a dataframe with missing values:

structure(list(id = c("id1", "test", "rew", "ewt"), total_frq_1 = c(54, 87, 10, 36), total_frq_2 = c(45, 24, 202, 43), total_frq_3 = c(24, NA, 25, 8), total_frq_4 = c(36, NA, 104, NA)), row.names = c(NA, 4L), class = "data.frame")

How is is possible to create a bar plot with the mean for every column, excluding the id column, but without filling the missing values with 0 but leaving out the row with missing values example for total_frq_3 24 25 8 = 57/3 = 19

CodePudding user response:

You can use colMeans function and pass it the appropriate argument to ignore NA.

library(ggplot2)
xy <- structure(list(id = c("id1", "test", "rew", "ewt"), 
total_frq_1 = c(54, 87, 10, 36), total_frq_2 = c(45, 24, 202, 43), total_frq_3 = c(24, NA, 25, 8), 
total_frq_4 = c(36, NA, 104, NA)), 
row.names = c(NA, 4L), 
class = "data.frame")

xy.means <- colMeans(x = xy[, 2:ncol(xy)], na.rm = TRUE)
xy.means <- as.data.frame(xy.means)
xy.means$total <- rownames(xy.means)

ggplot(xy.means, aes(x = total, y = xy.means))  
  theme_bw()  
  geom_col()

enter image description here

Or just use base image graphic

barplot(height = colMeans(x = xy[, 2:ncol(xy)], na.rm = TRUE))

enter image description here

  • Related