Getting different ggplot when using purrr::map - r

I am trying to use map() to generate a list of ggplot objects that I will combine with ggpubr::ggarrange after.
The stock ggplot call works fine:
# library(tidyverse)
ggplot(Tile,aes(x = Site, y = Volume))+
geom_point(aes(color = Event))+
geom_line(aes(x = Site, y = Volume, group = Event))+
ggtitle(paste("Tile", 'Volume'))
output (desired plot):
Now I use map() with the slightly modified but overall same ggplot call (should be):
x<-map(names(Tile)[-(1:2)], ~
ggplot(Tile,aes(x = Site, y = .x))+
geom_point(aes(color = Event))+
geom_line(aes(x = Site, y = .x, group = Event))+
ggtitle(paste("Tile", as.character(.x)))
)
which gives:
x[[5]]
What am I missing? Thanks.
data:
Tile<-structure(list(Event = c("10/17/2019", "10/17/2019", "10/23/2019",
"10/23/2019", "10/27/2019", "10/27/2019", "10/31/2019", "10/31/2019",
"11/24/2019", "11/24/2019", "11/28/2019", "11/28/2019", "12/10/2019",
"12/10/2019", "12/15/2019", "12/15/2019", "12/28/2019", "12/28/2019",
"12/30/2019", "12/30/2019", "1/3/2020", "1/3/2020", "1/12/2020",
"1/12/2020", "1/26/2020", "1/26/2020", "3/3/2020", "3/3/2020",
"3/8/2020", "3/8/2020", "3/13/2020", "3/13/2020", "5/12/2020",
"5/12/2020", "8/5/2020", "8/5/2020", "9/30/2020", "9/30/2020",
"12/1/2020", "12/1/2020", "12/25/2020", "12/25/2020", "1/17/2021",
"1/17/2021", "3/11/2021", "3/11/2021", "4/16/2021", "4/16/2021",
"4/22/2021", "4/22/2021", "4/30/2021", "4/30/2021", "5/6/2021",
"5/6/2021", "7/2/2021", "7/2/2021", "7/3/2021", "7/3/2021", "7/9/2021",
"7/9/2021", "7/13/2021", "7/13/2021", "7/14/2021", "7/14/2021",
"7/18/2021", "7/18/2021", "7/19/2021", "7/19/2021", "7/21/2021",
"7/21/2021", "7/31/2021", "7/31/2021", "8/2/2021", "8/2/2021",
"8/20/2021", "8/20/2021", "9/9/2021", "9/9/2021", "9/24/2021",
"9/24/2021", "10/17/2021", "10/17/2021", "10/22/2021", "10/22/2021",
"10/25/2021", "10/25/2021", "10/27/2021", "10/27/2021", "11/1/2021",
"11/1/2021"), Site = structure(c(3L, 1L, 3L, 1L, 3L, 1L, 3L,
1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L,
1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L,
1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L,
1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L,
1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L,
1L, 3L, 1L), .Label = c("DCNSUB", "DCNSUR", "DCSSUB", "DCSSUR"
), class = "factor"), TP.conc = c(1550, 2770, NA, NA, 1650, NA,
1810, NA, 666, 468, 1190, 1120, 574, 538, 487, 580, NA, 238,
610, 378, 398, 306, 744, 766, 447, 468, 504, 413, 384, 377, 714,
542, 927.2, 1000.1, 265.4, 285.1, 1527, 1764.5, NA, 460.9, NA,
469.8, NA, 172.8, 454, 432.8, 524.4, 476.4, 300, 303.6, 588.7,
598.1, 852.5, 797.6, 144.4, 122.1, 170.6, 110.1, 301.8, 328.8,
363.3, 498.5, 283.7, 104.9, 314.1, 327.6, 436.6, 262.1, 398.1,
358, 312, 251, 598, 831, 348, 456, 345, 240, 648, 949, 852, 1260,
643, 549, 712, 999, 982, 1100, 1240, 1555), TP.load = c(180.4,
NA, NA, NA, 67.6, NA, 201.5, NA, NA, NA, 53.3, 131.7, 12.1, 38.1,
7, 21.6, NA, NA, 21.2, 44.4, 6.1, 10.9, 79.7, 189.9, 10.5, 27.9,
84.2, 178.7, 13.6, 46.3, 14.4, 26.2, 11.4, 35, 4.2, 10.1, 4.6,
18.9, NA, 58.3, NA, 140.9, NA, 7.6, 181.8, 238.2, 72.5, 97.7,
18.5, 30.6, 121.4, 177.7, 114.1, 166.3, 22.8, 21.9, 15.1, 9.2,
25.8, 29.4, 7.6, 12.3, 3, 1.7, 58.5, 71, 23.3, 15.7, 32.7, 39.7,
3.1, 3.4, 67.2, 126, 49.1, 79.1, 8.6, 5.8, 8.7, 15.3, 38.62755,
62.40857143, NA, NA, NA, NA, NA, NA, NA, NA), SRP.conc = c(NA,
NA, NA, NA, 403, NA, NA, NA, NA, NA, NA, NA, 245, 234, 238, 197,
NA, 118, NA, NA, NA, NA, NA, 270, 121, 135, NA, NA, NA, NA, NA,
NA, 596.7, 635.6, 48, 85.9, 514.8, 572.7, NA, 161.5, NA, 163.3,
NA, 46.4, 96.9, 127, 83.1, 92.3, 53.5, 60.7, 111.7, 133.7, 132.2,
164.1, 50.1, 49.1, 54, 42.5, 122.5, 131.9, 104.2, 194.5, 84.6,
34.8, 90.2, 106.6, NA, NA, 129.9, 118.2, 62.2, 84.7, 105, 152,
92.6, 66, 45.9, 50.5, 66.2, 167, 264, 412, 203, 175, 352, 560,
503, 625, 621, 836), SRP.load = c(NA, NA, NA, NA, 16.5, NA, NA,
NA, NA, NA, NA, NA, 5.2, 16.6, 3.4, 7.3, NA, NA, NA, NA, NA,
NA, NA, 66.9, 2.8, 8, NA, NA, NA, NA, NA, NA, 7.3, 22.2, 0.8,
3.1, 1.6, 6.1, NA, 20.4, NA, 49, NA, 2, 38.8, 69.9, 11.5, 18.9,
3.3, 6.1, 23, 39.7, 17.7, 34.2, 7.9, 8.8, 4.8, 3.6, 10.5, 11.8,
2.2, 4.8, 0.9, 0.6, 16.8, 23.1, NA, NA, 10.7, 13.1, 0.6, 1.2,
11.8, 23, 13.1, 11.4, 1.1, 1.2, 0.9, 2.7, 12, 20.4, NA, NA, NA,
NA, NA, NA, NA, NA), Volume = c(11.64, NA, 1.87, 4.5, 4.1, 9.69,
11.13, 34, NA, NA, 4.48, 11.76, 2.1, 7.08, 1.45, 3.73, NA, NA,
3.47, 11.74, 1.52, 3.56, 10.71, 24.79, 2.34, 5.96, 16.71, 43.28,
3.54, 12.29, 2.02, 4.84, 1.22, 3.5, 1.59, 3.56, 0.3, 1.07, NA,
12.66, NA, 29.99, NA, 4.37, 40.04, 55.03, 13.82, 20.51, 6.18,
10.07, 20.62, 29.72, 13.38, 20.85, 15.76, 17.96, 8.82, 8.36,
8.56, 8.94, 2.1, 2.46, 1.07, 1.58, 18.64, 21.67, 5.33, 6, 8.22,
11.09, 0.99, 1.36, 11.23, 15.16, 14.11, 17.34, 2.48, 2.4, 1.34,
1.61, 4.53, 4.95, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(1L,
4L, 5L, 8L, 9L, 12L, 13L, 16L, 17L, 20L, 21L, 24L, 25L, 28L,
29L, 32L, 33L, 36L, 37L, 40L, 41L, 44L, 45L, 48L, 49L, 52L, 53L,
56L, 57L, 60L, 61L, 64L, 65L, 68L, 69L, 72L, 73L, 76L, 77L, 80L,
81L, 84L, 85L, 88L, 89L, 92L, 93L, 96L, 97L, 100L, 101L, 104L,
105L, 108L, 109L, 112L, 113L, 116L, 117L, 120L, 121L, 124L, 125L,
128L, 129L, 132L, 133L, 136L, 137L, 140L, 141L, 144L, 145L, 148L,
149L, 152L, 153L, 156L, 157L, 160L, 161L, 164L, 165L, 168L, 169L,
172L, 173L, 176L, 177L, 180L), class = "data.frame")

The .x is the individual column names, as aes can take only symbol or unquoted column names, use .data to subset the data column or another option is to convert to symbol and evaluate (!!). But, it is better to use .data
library(purrr)
library(ggplot2)
x <- map(names(Tile)[-(1:2)], ~
ggplot(Tile,aes(x = Site, y = .data[[.x]]))+
geom_point(aes(color = Event))+
geom_line(aes(x = Site, y = .data[[.x]], group = Event))+
ggtitle(paste("Surface", .x))
)
-output
x[[5]]

Related

Clustering in R using K-mean

I tried to cluster my dataset using K-mean, but there is a categorical data in column 9; so when I ran k-mean it had an error like this:
res<-NbClust(mi[2:9],min.nc=2,max.nc=15,method="ward.D2")
Error in t(jeu) %*% jeu :
requires numeric/complex matrix/vector arguments
So I could only run K-mean for columns from 2 to 8. I wonder if there is another way of clustering the data where I could run with column 9 as well?
Data:
df <- structure(list(Name = structure(c(58L, 188L, 40L, 155L, 32L, 88L, 92L, 55L, 135L, 31L, 139L, 26L, 126L, 10L, 166L, 104L, 75L, 180L, 35L, 175L, 77L, 99L, 4L, 71L, 141L, 176L, 53L, 39L, 172L, 196L, 123L, 107L, 16L, 96L, 82L, 185L, 30L, 15L, 94L, 129L, 187L, 151L, 33L, 23L, 28L, 44L, 157L, 69L, 132L, 83L, 131L, 11L, 182L, 181L, 54L, 115L, 116L, 183L, 150L, 195L, 45L, 144L, 1L, 110L, 17L, 114L, 9L, 117L, 112L, 70L, 34L, 169L, 27L, 66L, 3L, 73L, 133L, 91L, 154L, 130L, 160L, 105L, 90L, 165L, 67L, 100L, 162L, 98L, 29L, 68L, 189L, 192L, 102L, 190L, 134L, 136L, 52L, 12L, 81L, 59L, 63L, 122L, 93L, 109L, 178L, 138L, 5L, 43L, 140L, 95L, 2L, 174L, 76L, 51L, 156L, 60L, 149L, 128L, 177L, 142L, 103L, 7L, 8L, 14L, 164L, 74L, 145L, 148L, 113L, 86L, 108L, 48L, 163L, 6L, 186L, 89L, 36L, 191L, 125L, 120L, 62L, 65L, 124L, 168L, 147L, 79L, 173L, 84L, 193L, 25L, 146L, 121L, 127L, 153L, 13L, 106L, 119L, 161L, 49L, 97L, 101L, 61L, 137L, 24L, 85L, 194L, 78L, 41L, 170L, 47L, 118L, 184L, 179L, 72L, 42L, 111L, 87L, 57L, 38L, 37L, 171L, 22L, 50L, 80L, 159L, 18L, 152L, 64L, 56L, 158L, 167L, 46L, 19L, 21L, 20L, 143L), .Label = c("#Mashtag 2013", "#Mashtag 2014", "#Mashtag 2015", "10 Heads High", "5am Saint", "77 Lager", "AB:02", "AB:03", "AB:04", "AB:06", "AB:08", "AB:10", "AB:11", "AB:13", "AB:15", "AB:17", "AB:18", "AB:20", "Ace Of Chinook", "Ace Of Citra", "Ace Of Equinox", "Ace Of Simcoe", "Albino Squid Assasin", "Alice Porter", "All Day Long - Prototype Challenge", "Alpha Dog", "Alpha Pop", "Amarillo - IPA Is Dead", "American Ale", "Anarchist Alchemist", "Arcade Nation", "Avery Brown Dredge", "Baby Dogma", "Baby Saison - B-Sides", "Bad Pixie", "Barley Wine - Russian Doll", "Barrel Aged Albino Squid Assassin", "Barrel Aged Hinterland", "Berliner Weisse With Raspberries And Rhubarb - B-Sides", "Berliner Weisse With Yuzu - B-Sides", "Bitch Please (w/ 3 Floyds)", "Black Dog", "Black Eye Joe (w/ Stone Brewing Co)", "Black Eyed King Imp", "Black Eyed King Imp - Vietnamese Coffee Edition", "Black Hammer", "Black Jacques", "Black Tokyo Horizon (w/Nøgne Ã\230 & Mikkeller)", "Blitz Berliner Weisse", "Blitz Series", "Born To Die", "Bounty Hunter - Shareholder Brew", "Bourbon Baby", "Bracken's Porter", "Bramling X", "Brewdog Vs Beavertown", "Brixton Porter", "Buzz", "Candy Kaiser", "Cap Dog (w/ Cap Brewery)", "Catherine's Pony (w/ Beavertown)", "Challenger", "Chaos Theory", "Chili Hammer", "Chinook - IPA Is Dead", "Citra", "Clown King", "Cocoa Psycho", "Coffee Imperial Stout", "Comet", "Dana - IPA Is Dead", "Dead Metaphor", "Dead Pony Club", "Deaf Mermaid - B-Sides", "Devine Rebel (w/ Mikkeller)", "Dog A", "Dog B", "Dog C", "Dog D", "Dog E", "Dog Fight (w/ Flying Dog)", "Dog Wired (w/8 Wired)", "Dogma", "Doodlebug", "Double IPA - Russian Doll", "Edge", "El Dorado - IPA Is Dead", "Electric India", "Ella - IPA Is Dead", "Elvis Juice V2.0 - Prototype Challenge", "Everday Anarchy", "Fake Lager", "Galaxy", "Goldings - IPA Is Dead", "Growler", "Hardcore IPA", "Hardkogt IPA", "HBC 366 - IPA Is Dead", "HBC 369", "Hello My Name Is Beastie", "Hello My Name Is Holy Moose", "Hello My Name Is Ingrid", "Hello My Name Is Little Ingrid", "Hello My Name Is Mette-Marit", "Hello My Name Is PaÌ\210ivi", "Hello My Name is Sonja (w/ Evil Twin)", "Hello My Name is Vladimir", "Hello My Name Is ZeÌ\201 (w/ 2Cabeças)", "Hinterland", "Hobo Pop", "Hop Fiction - Prototype Challenge", "Hopped-Up Brown Ale - Prototype Challenge", "Hoppy Christmas", "Hops Kill Nazis", "Hunter Foundation Pale Ale", "Hype", "India Session Lager - Prototype Challenge", "International Arms Race (w/ Flying Dog)", "Interstellar", "Jack Hammer", "Jasmine IPA", "Jet Black Heart", "Kohatu - IPA Is Dead", "Konnichiwa Kitsune", "Libertine Black Ale", "Libertine Porter", "Lichtenstein Pale Ale", "Lizard Bride - Prototype Challenge", "Lost Dog (w/Lost Abbey)", "Lumberjack Stout", "Magic Stone Dog (w/Magic Rock & Stone Brewing Co.)", "Mandarina Bavaria - IPA Is Dead", "Mango Gose - B-Sides", "Melon And Cucumber IPA - B-Sides", "Misspent Youth", "Morag's Mojito - B-Sides", "Moshi Moshi 15", "Motueka", "Movember", "Mr.Miyagi's Wasabi Stout", "Nanny State", "Nelson Sauvin", "Neon Overlord", "Never Mind The Anabolics", "No Label", "Nuns With Guns", "Old World India Pale Ale", "Old World Russian Imperial Stout", "Orange Blossom - B-Sides", "Pale - Russian Doll", "Paradox Islay", "Paradox Islay 2.0", "Paradox Jura", "Peroxide Punk", "Pilsen Lager", "Pioneer - IPA Is Dead", "Prototype 27", "Prototype Helles", "Prototype Pils 2.0", "Pumpkin King", "Punk IPA 2007 - 2010", "Punk IPA 2010 - Current", "Restorative Beverage For Invalids And Convalescents", "Rhubarb Saison - B-Sides", "Riptide", "Russian Doll â\200“ India Pale Ale", "Rye Hammer", "San Diego Scotch Ale (w/Ballast Point)", "Santa Paws", "Shareholder Black IPA 2011", "Ship Wreck", "Shipwrecker Circus (w/ Oskar Blues)", "Simcoe", "Sink The Bismarck!", "Skull Candy", "Sorachi Ace", "Sorachi Bitter - B-Sides", "Spiced Cherry Sour - B-Sides", "Stereo Wolf Stout - Prototype Challenge", "Storm", "Sub Hop", "Sunk Punk", "Sunmaid Stout", "Sunshine On Rye - B-Sides", "The Physics", "This. Is. Lager", "TM10", "Trashy Blonde", "Truffle and Chocolate Stout - B-Sides", "U-Boat (w/ Victory Brewing)", "Vagabond Pale ALe - Prototype Challenge", "Vagabond Pilsner", "Vic Secret", "Waimea - IPA Is Dead", "Whisky Sour - B-Sides", "Zephyr"), class = "factor"), ABV = c(4.5, 4.1, 4.2, 6.3, 7.2, NA, 4.7, 7.5, 7.3, 5.3, 4.5, 4.5, 6.1, 11.2, 6, 8.2, 12.5, 8, 4.7, 3.5, 15, 6.7, 7.8, 6.7, 0.5, 7.5, 5.8, 3.6, 10.5, 12.5, 7.2, 8.2, 10.7, 9.2, 7.1, 5, 16.5, 12.8, 6.7, 10, NA, 10, 4.5, 7.4, 7.2, 9.5, 9.2, 9, 7.2, 7.5, NA, 10.43, 7.1, 8, 5, 5.4, 4.1, 10.2, 4, 7, 12.7, 6.5, 7.5, 4.2, 11.8, 7.6, 15, 4.4, 6.3, 7.2, NA, 4.5, 4.5, 7.5, 10, 3.8, 6.4, NA, 4, 15.2, 5.4, 8.3, 6.5, 8, 12, 8.2, 5.6, 7.2, 6.3, 10, 5.6, 4.5, 8.2, 8.4, 6, 6.7, 6.5, 11.5, 8.5, 5.2, 7.1, 4.7, 6.7, 9, 6.5, 6.7, 5, 5.8, 7.5, 4.5, 9, 41, 15, 8.5, 7.2, 9, 3.8, 5.7, 6.3, 7.5, 4.4, 18, 10.5, 11.3, NA, 5.2, 4.5, 9.5, 7.2, 2.7, 6.4, 17.2, 8.5, 4.9, 4.7, 7.2, 10, 4.5, 7.2, 7.2, 6.7, 7.2, 4.4, 9, 7.5, 16.1, 6.7, 2.5, 7.4, 2.8, 4.2, 5.8, 5.2, 10, 12.8, 8.3, 6.5, 6, 3, 7.6, 5.5, 8.8, 5.2, 5.2, 8, 6.7, 15, 11.5, 7.1, NA, 7.5, 7.2, 5.2, 6.8, 5.5, 5.2, 6.7, 5, 9, 9.2, 13.8, 4.5, 3.2, 16.1, 4.7, 14.2, 13, 7.2, 9.2, 4.9, 7.2, 7.2, 4.5, 4.5, 4.5, 7.6), IBU = c(60, 41.5, 8, 55, 59, 38, 40, 75, 30, 60, 50, 42, 45, 150, 70, 70, 100, 60, 45, 33, 90, 67, 70, 70, 55, 75, 35, 8, 85, 125, 70, 70, 100, 125, 65, 47, 20.5, 50, 70, 35, 20, 55, 35, 65, 70, 85, 149, 65, 100, 30, 30, 65, 68, 35, 50, 35, 65, 50, 35, 20, 85, 35, 50, 50, 80, 70, 80, 35, 85, 70, 9, 35, 30, 70, 85, 35, 40, 45, 40, 20, 20, 70, 60, 45, 85, 42, 40, 70, 55, 85, 30, 55, 42, 50, 50, 40, 35, 80, 65, 45, 90, 45, 67, 85, 20, 67, 30, 40, 90, 38, 50, 1085, 90, 85, 100, 80, 20, 35, 130, 75, 35, 70, 14, 50, 25, 65, 25, 80, 70, 36, 50, 75, 100, 30, 37, 100, 80, 55, 50, 250, 67, 100, 70, 70, 80, 85, 70, 35, 70, 30, 25, 40, 50, 55, 70, 70, 55, 60, 8, 175, 35, 40, 45, 55, 85, 70, 90, 50, 80, 45, 0, 130, 55, 30, 60, 40, 70, 50, 85, 65, 60, 40, 8, 100, 25, 20, 100, 250, 50, 18, 250, 250, 40, 40, 40, 70), OG = c(1044, 1041.7, 1040, 1060, 1069, 1045, 1046, 1068, 1079, 1052, 1047, 1046, 1067, 1098, 1058, 1076, 1093, 1082, 1047, 1038, 1120, 1013, 1074, 1066, 1007, 1068, 1049, 1040, 1102, 1087, 1067, 1076, 1105, 1085, 1065, 1048.5, 1112, 1096, 1066, 1080, 1048, 1090, 1048, 1069, 1067, 1095, 1083, 1080, 1064, 1080, 1043, 1095, 1056, 1077, 1049, 1050, 1042, 1026, 1041, 1081, 1113.5, 1050, 1070, 1042, 1096, 1073, 1113, 1040, 1063, 1067, 1032, 1048, 1045, 1068, 1098, 1040, 1057, 1081, 1039, 1110, 1055, 1076, 1060, 1075, 1130, 1078, 1055, 1067, 1060, 1098, 1058, 1046, 1078, 1080, 1050, 1063, 1068, 1096, 1078, 1049, 1067, 1055, 1013, 1094, 1060, 1013, 1050, 1053, 1072, 1042.9, 1084, 1085, 1120, 1072, 1064, 1083, 1039, 1053, 1060, 1068, 1045, 1150, 1093, 1098, 1052, 1048, 1043, 1075, 1067, 1033, 1061, 1156, 1068, 1047, 1043, 1064, 1097, 1045, 1068, 1065, 1064, 1064, 1045, 1090, 1069, 1125, 1063, 1027, 1069, 1032.5, 1044, 1060, 1050, 1128, 1108, 1076, 1059, 1056, 1007, 1072, 1053, 1084, 1048, 1053, 1074, 1066, 1120, 1104, 1067, 1089, 1069, 1065, 1052, 1068, 1062, 1048, 1066, 1053, 1094, 1069, 1088, 1045, 1007, 1015, 1008, 1025, 1015, 1065, 1016, 1010, 1065, 1065, 1045, 1045, 1045, 1067), EBC = c(20, 15, 8, 30, 10, 15, 12, 22, 120, 200, 140, 62, 219, 70, 25, NA, 36, 12, 8, 50, 100, 19, 90, 30, 30, 30, 44, NA, 64, 40, 30, 16, 300, 40, 13, 65, 20, 111, 30, 80, 14, 300, 40, 60, 30, 250, 19.5, 97, 12, 46, 15, 23, 14, 15, 110, 11.5, 17, 197, 45, 12, 250, 23, 40, 30, 115, 59, 400, 12, 24, 30, 2, 44, 25, 30, 130, 25, 10, 15, 18, 158, 30, 30, 25, 240, 24, 90, 15, 30, 30, 30, 54, 25, 70, 200, 8, 15, 250, 115, 31.2, 45, 15, 200, 19, 400, NA, 19, 60, 177.3, 200, 18, 20, 40, 100, 15, 12, 180, 6, 25, 14, 30, 30, 57, NA, 164, 10, 16, 10, 195, 30, 57, 20, 128, 15, 12, 10, 12, 65, 20, 150, 15, 19, 12, 30, 190, 50, 400, 30, 10, 30, 42, 19, 35, 17, 300, 79, 30, 50, 17, 9, 40, 25, 190, 35, 165, 35, 30, 100, 38, 71, 15, 50, 14, 200, 86, 230, 13, 30, 200, 400, 60, 25, 18, 8, 500, 25, 67, 300, 15, 78.8, 13, 17, 104, 18, 18, 18, 20), PH = c(4.4, 4.4, 3.2, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.2, 5.2, 4.4, 4.4, 4.4, 5.2, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 3.2, 4.4, 4.4, 4.4, 4.4, 4.3, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.2, 4.4, 4.4, 4.2, 4.4, 4.4, 4.4, 4.4, 4.4, 4.5, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 5.2, 3.2, 5.2, 4.4, 4.4, 4.4, 5.2, 4.4, 4, 4.4, 4.2, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 3.5, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 5.2, 5.2, 4.2, 4.4, 4.4, 4.2, 4.4, 4.4, 4.4, 4.3, 3.2, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 5.2, 5.2, 4.4, 5.2, 4.4, 4.4, 4.4, 4.4, 4.4, 5.2, 5.2, 4.2, 4.5, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.2, 4.4, 4.4, 4.2, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.3, 4.4, 4.2, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 3.2, 4.4, 4.4, 4.5, 4.4, 5.2, 5.2, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 5.2, 5.2, 4.4, 4.4, 4.4, 4.4, 4.4, 4.3, 4.2, 4.4, 4.2, 3.2, 4.4, 4.2, 4, 4.4, 4.4, 4.2, 4.2, 4.4, 4.4, 4.2, 4.2, 4.2, 4.4), AttenuationLevel = c(75, 76, 83, 80, 67, 88.9, 78, 80.9, 74.7, 77, 74.5, 72.8, 70.1, 87, 79.3, 83, 68, 86, 79, 68.4, 98, 79.7, 79.7, 77.3, 28.6, 82.1, 90, 83, 102, 81.2, 82.1, 83, 76.2, 81.2, 85, 79.4, 100, 79.17, 77.3, 85, 89.6, 84.4, 72.9, 82.6, 82.1, 76.8, 83, 76, 84, 70, 81.4, 83.2, 82.1, 79.2, 79, 84, 76.2, 74.5, 75.6, 74, 76.8, 76, 81.4, 76.2, 79.2, 79.5, 84.1, 79.5, 82.6, 82.1, 88, 72.9, 75.6, 82.1, 79.6, 70, 87, 93.8, 76.9, 82, 74.6, 82.9, 83.3, 81.3, 102.3, 83.3, 78, 82.1, 80, 70, 74, 73.9, 83.3, 81.3, 87, 84, 70.6, 79.2, 84.6, 81.6, 80.6, 70, 79.7, 73.4, 87, 79.7, 76, 84.9, 79.2, 81, 82.1, 81.2, 98, 90.3, 84, 83.1, 87, 79.3, 83, 82.1, 73.3, 93.3, 80, 79.6, 87, 79, 79.1, 81.3, 82.1, 70.8, 80.3, 80.8, 95.6, 80.7, 83.7, 84, 79.4, 73.9, 78.6, 84.6, 79.7, 84, 82.9, 80, 82.6, 84, 81, 70.4, 82.6, 63.1, 72.7, 76.7, 80, 89, 81.5, 82.9, 81.4, 82.14, 82.5, 80.6, 79.3, 79.8, 77.1, 75.5, 82.4, 77.3, 98, 85, 79, 94.4, 81.1, 87, 73.1, 76.5, 67.7, 79.2, 77.3, 73.6, 73.4, 82.6, 83, 75.6, 78, 84, 75.6, 75.6, 84.4, 84.6, 81, 78.7, 84.6, 84.6, 75.6, 75.6, 75.6, 82), FermentationTempCelsius = c(19L, 18L, 21L, 9L, 10L, 22L, 10L, 19L, 19L, 19L, 19L, 22L, 18L, 17L, 19L, 19L, 19L, 19L, 19L, 19L, 19L, 19L, 18L, 19L, 19L, 19L, 19L, 21L, 21L, 21L, 19L, 21L, 21L, 21L, 9L, 19L, 20L, 21L, 19L, 19L, 22L, 21L, 19L, 18L, 19L, 18L, 19L, 19L, 19L, 12L, 23L, 21L, 10L, 9L, 19L, 19L, 19L, 21L, 19L, 19L, 18L, 18L, 21L, 19L, 20L, 20L, 21L, 10L, 19L, 19L, 21L, 19L, 19L, 19L, 21L, 19L, 20L, 23L, 19L, 21L, 19L, 21L, 19L, 20L, 21L, 21L, 19L, 19L, 19L, 21L, 19L, 9L, 22L, 14L, 20L, 19L, 19L, 20L, 18L, 14L, 19L, 19L, 19L, 21L, 20L, 19L, 19L, 19L, 21L, 10L, 21L, 21L, 19L, 18L, 19L, 21L, 20L, 17L, 20L, 19L, 19L, 22L, 19L, 20L, 20L, 19L, 15L, 19L, 19L, 19L, 19L, 21L, 21L, 10L, 12L, 19L, 21L, 19L, 19L, 21L, 19L, 19L, 20L, 21L, 22L, 21L, 99L, 19L, 19L, 22L, 16L, 19L, 19L, 21L, 18L, 21L, 19L, 19L, 19L, 21L, 17L, 21L, 19L, 19L, 19L, 19L, 19L, 21L, 19L, 23L, 19L, 20L, 19L, 19L, 19L, 19L, 19L, 19L, 21L, 18L, 21L, 19L, 21L, 21L, 12L, 21L, 21L, 21L, 21L, 12L, 21L, 21L, 19L, 19L, 19L, 21L), Yeast = structure(c(1L, 1L, 1L, 3L, 3L, 4L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 3L, 1L, 2L, 2L, 1L, 2L, 4L, 2L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 3L, 4L, 2L, 3L, 3L, 1L, 1L, 2L, 2L, 1L, 2L, 2L, 1L, 2L, 1L, 2L, 2L, 2L, 3L, 1L, 1L, 4L, 1L, 1L, 1L, 2L, 1L, 1L, 4L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 3L, 2L, 3L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 3L, 2L, 2L, 2L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 4L, 1L, 1L, 2L, 1L, 1L, 1L, 2L, 2L, 3L, 3L, 1L, 2L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 3L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 4L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 1L, 1L, 2L, 3L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 1L, 1L, 1L, 2L), .Label = c("Wyeast 1056 - American Ale", "Wyeast 1272 - American Ale II", "Wyeast 2007 - Pilsen Lager", "Wyeast 3711 - French Saison"), class = "factor")), class = "data.frame", row.names = c(NA, -196L))
df
To solve your specific issue, you can generate dummy variables to run your desired clustering.
One way to do it is using the dummy_columns() function from the fastDummies package.
library(fastDummies)
df_dummy <- dummy_columns(df, select_columns = "Yeast", remove_selected_columns = TRUE)
res <- NbClust(df_dummy[2:9], min.nc = 2, max.nc = 15, method = "ward.D2")
As noted in the comments, the better practices for conduncting clustering analysis are more questions for CrossValidated.

How to join to column after imputation [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 1 year ago.
Improve this question
I ran multiple imputation to impute missing data for 2 variables of a data frame, then I got a new data frame (with 2 columns for 2 imputed variables).
Now, I want to replace the 2 columns in the original data frame with the two newly imputed columns from my new dataframe.
What should I do?
Original data frame
new data frame for imputed variables
This is the code I used. Only 2 columns in this data frame are missing data, so I only imputed those two. Is that ok? Can you please suggest me a better way?
library("mice")
imi<-mice(subset(data,select=c('ABV','EBC')),m=5,maxit=10)
Data
structure(list(Name = structure(c(58L, 188L, 40L, 155L, 32L,
88L, 92L, 55L, 135L, 31L, 139L, 26L, 126L, 10L, 166L, 104L, 75L,
180L, 35L, 175L, 77L, 99L, 4L, 71L, 141L, 176L, 53L, 39L, 172L,
196L, 123L, 107L, 16L, 96L, 82L, 185L, 30L, 15L, 94L, 129L, 187L,
151L, 33L, 23L, 28L, 44L, 157L, 69L, 132L, 83L, 131L, 11L, 182L,
181L, 54L, 115L, 116L, 183L, 150L, 195L, 45L, 144L, 1L, 110L,
17L, 114L, 9L, 117L, 112L, 70L, 34L, 169L, 27L, 66L, 3L, 73L,
133L, 91L, 154L, 130L, 160L, 105L, 90L, 165L, 67L, 100L, 162L,
98L, 29L, 68L, 189L, 192L, 102L, 190L, 134L, 136L, 52L, 12L,
81L, 59L, 63L, 122L, 93L, 109L, 178L, 138L, 5L, 43L, 140L, 95L,
2L, 174L, 76L, 51L, 156L, 60L, 149L, 128L, 177L, 142L, 103L,
7L, 8L, 14L, 164L, 74L, 145L, 148L, 113L, 86L, 108L, 48L, 163L,
6L, 186L, 89L, 36L, 191L, 125L, 120L, 62L, 65L, 124L, 168L, 147L,
79L, 173L, 84L, 193L, 25L, 146L, 121L, 127L, 153L, 13L, 106L,
119L, 161L, 49L, 97L, 101L, 61L, 137L, 24L, 85L, 194L, 78L, 41L,
170L, 47L, 118L, 184L, 179L, 72L, 42L, 111L, 87L, 57L, 38L, 37L,
171L, 22L, 50L, 80L, 159L, 18L, 152L, 64L, 56L, 158L, 167L, 46L,
19L, 21L, 20L, 143L), .Label = c("#Mashtag 2013", "#Mashtag 2014",
"#Mashtag 2015", "10 Heads High", "5am Saint", "77 Lager", "AB:02",
"AB:03", "AB:04", "AB:06", "AB:08", "AB:10", "AB:11", "AB:13",
"AB:15", "AB:17", "AB:18", "AB:20", "Ace Of Chinook", "Ace Of Citra",
"Ace Of Equinox", "Ace Of Simcoe", "Albino Squid Assasin", "Alice Porter",
"All Day Long - Prototype Challenge", "Alpha Dog", "Alpha Pop",
"Amarillo - IPA Is Dead", "American Ale", "Anarchist Alchemist",
"Arcade Nation", "Avery Brown Dredge", "Baby Dogma", "Baby Saison - B-Sides",
"Bad Pixie", "Barley Wine - Russian Doll", "Barrel Aged Albino Squid Assassin",
"Barrel Aged Hinterland", "Berliner Weisse With Raspberries And Rhubarb - B-Sides",
"Berliner Weisse With Yuzu - B-Sides", "Bitch Please (w/ 3 Floyds)",
"Black Dog", "Black Eye Joe (w/ Stone Brewing Co)", "Black Eyed King Imp",
"Black Eyed King Imp - Vietnamese Coffee Edition", "Black Hammer",
"Black Jacques", "Black Tokyo Horizon (w/Nøgne Ã\230 & Mikkeller)",
"Blitz Berliner Weisse", "Blitz Series", "Born To Die", "Bounty Hunter - Shareholder Brew",
"Bourbon Baby", "Bracken's Porter", "Bramling X", "Brewdog Vs Beavertown",
"Brixton Porter", "Buzz", "Candy Kaiser", "Cap Dog (w/ Cap Brewery)",
"Catherine's Pony (w/ Beavertown)", "Challenger", "Chaos Theory",
"Chili Hammer", "Chinook - IPA Is Dead", "Citra", "Clown King",
"Cocoa Psycho", "Coffee Imperial Stout", "Comet", "Dana - IPA Is Dead",
"Dead Metaphor", "Dead Pony Club", "Deaf Mermaid - B-Sides",
"Devine Rebel (w/ Mikkeller)", "Dog A", "Dog B", "Dog C", "Dog D",
"Dog E", "Dog Fight (w/ Flying Dog)", "Dog Wired (w/8 Wired)",
"Dogma", "Doodlebug", "Double IPA - Russian Doll", "Edge", "El Dorado - IPA Is Dead",
"Electric India", "Ella - IPA Is Dead", "Elvis Juice V2.0 - Prototype Challenge",
"Everday Anarchy", "Fake Lager", "Galaxy", "Goldings - IPA Is Dead",
"Growler", "Hardcore IPA", "Hardkogt IPA", "HBC 366 - IPA Is Dead",
"HBC 369", "Hello My Name Is Beastie", "Hello My Name Is Holy Moose",
"Hello My Name Is Ingrid", "Hello My Name Is Little Ingrid",
"Hello My Name Is Mette-Marit", "Hello My Name Is PaÌ\210ivi",
"Hello My Name is Sonja (w/ Evil Twin)", "Hello My Name is Vladimir",
"Hello My Name Is ZeÌ\201 (w/ 2Cabeças)", "Hinterland", "Hobo Pop",
"Hop Fiction - Prototype Challenge", "Hopped-Up Brown Ale - Prototype Challenge",
"Hoppy Christmas", "Hops Kill Nazis", "Hunter Foundation Pale Ale",
"Hype", "India Session Lager - Prototype Challenge", "International Arms Race (w/ Flying Dog)",
"Interstellar", "Jack Hammer", "Jasmine IPA", "Jet Black Heart",
"Kohatu - IPA Is Dead", "Konnichiwa Kitsune", "Libertine Black Ale",
"Libertine Porter", "Lichtenstein Pale Ale", "Lizard Bride - Prototype Challenge",
"Lost Dog (w/Lost Abbey)", "Lumberjack Stout", "Magic Stone Dog (w/Magic Rock & Stone Brewing Co.)",
"Mandarina Bavaria - IPA Is Dead", "Mango Gose - B-Sides", "Melon And Cucumber IPA - B-Sides",
"Misspent Youth", "Morag's Mojito - B-Sides", "Moshi Moshi 15",
"Motueka", "Movember", "Mr.Miyagi's Wasabi Stout", "Nanny State",
"Nelson Sauvin", "Neon Overlord", "Never Mind The Anabolics",
"No Label", "Nuns With Guns", "Old World India Pale Ale", "Old World Russian Imperial Stout",
"Orange Blossom - B-Sides", "Pale - Russian Doll", "Paradox Islay",
"Paradox Islay 2.0", "Paradox Jura", "Peroxide Punk", "Pilsen Lager",
"Pioneer - IPA Is Dead", "Prototype 27", "Prototype Helles",
"Prototype Pils 2.0", "Pumpkin King", "Punk IPA 2007 - 2010",
"Punk IPA 2010 - Current", "Restorative Beverage For Invalids And Convalescents",
"Rhubarb Saison - B-Sides", "Riptide", "Russian Doll â\200“ India Pale Ale",
"Rye Hammer", "San Diego Scotch Ale (w/Ballast Point)", "Santa Paws",
"Shareholder Black IPA 2011", "Ship Wreck", "Shipwrecker Circus (w/ Oskar Blues)",
"Simcoe", "Sink The Bismarck!", "Skull Candy", "Sorachi Ace",
"Sorachi Bitter - B-Sides", "Spiced Cherry Sour - B-Sides", "Stereo Wolf Stout - Prototype Challenge",
"Storm", "Sub Hop", "Sunk Punk", "Sunmaid Stout", "Sunshine On Rye - B-Sides",
"The Physics", "This. Is. Lager", "TM10", "Trashy Blonde", "Truffle and Chocolate Stout - B-Sides",
"U-Boat (w/ Victory Brewing)", "Vagabond Pale ALe - Prototype Challenge",
"Vagabond Pilsner", "Vic Secret", "Waimea - IPA Is Dead", "Whisky Sour - B-Sides",
"Zephyr"), class = "factor"), ABV = c(4.5, 4.1, 4.2, 6.3, 7.2,
NA, 4.7, 7.5, 7.3, 5.3, 4.5, 4.5, 6.1, 11.2, 6, 8.2, 12.5, 8,
4.7, 3.5, 15, 6.7, 7.8, 6.7, 0.5, 7.5, 5.8, 3.6, 10.5, 12.5,
7.2, 8.2, 10.7, 9.2, 7.1, 5, 16.5, 12.8, 6.7, 10, NA, 10, 4.5,
7.4, 7.2, 9.5, 9.2, 9, 7.2, 7.5, NA, 10.43, 7.1, 8, 5, 5.4, 4.1,
10.2, 4, 7, 12.7, 6.5, 7.5, 4.2, 11.8, 7.6, 15, 4.4, 6.3, 7.2,
NA, 4.5, 4.5, 7.5, 10, 3.8, 6.4, NA, 4, 15.2, 5.4, 8.3, 6.5,
8, 12, 8.2, 5.6, 7.2, 6.3, 10, 5.6, 4.5, 8.2, 8.4, 6, 6.7, 6.5,
11.5, 8.5, 5.2, 7.1, 4.7, 6.7, 9, 6.5, 6.7, 5, 5.8, 7.5, 4.5,
9, 41, 15, 8.5, 7.2, 9, 3.8, 5.7, 6.3, 7.5, 4.4, 18, 10.5, 11.3,
NA, 5.2, 4.5, 9.5, 7.2, 2.7, 6.4, 17.2, 8.5, 4.9, 4.7, 7.2, 10,
4.5, 7.2, 7.2, 6.7, 7.2, 4.4, 9, 7.5, 16.1, 6.7, 2.5, 7.4, 2.8,
4.2, 5.8, 5.2, 10, 12.8, 8.3, 6.5, 6, 3, 7.6, 5.5, 8.8, 5.2,
5.2, 8, 6.7, 15, 11.5, 7.1, NA, 7.5, 7.2, 5.2, 6.8, 5.5, 5.2,
6.7, 5, 9, 9.2, 13.8, 4.5, 3.2, 16.1, 4.7, 14.2, 13, 7.2, 9.2,
4.9, 7.2, 7.2, 4.5, 4.5, 4.5, 7.6), IBU = c(60, 41.5, 8, 55,
59, 38, 40, 75, 30, 60, 50, 42, 45, 150, 70, 70, 100, 60, 45,
33, 90, 67, 70, 70, 55, 75, 35, 8, 85, 125, 70, 70, 100, 125,
65, 47, 20.5, 50, 70, 35, 20, 55, 35, 65, 70, 85, 149, 65, 100,
30, 30, 65, 68, 35, 50, 35, 65, 50, 35, 20, 85, 35, 50, 50, 80,
70, 80, 35, 85, 70, 9, 35, 30, 70, 85, 35, 40, 45, 40, 20, 20,
70, 60, 45, 85, 42, 40, 70, 55, 85, 30, 55, 42, 50, 50, 40, 35,
80, 65, 45, 90, 45, 67, 85, 20, 67, 30, 40, 90, 38, 50, 1085,
90, 85, 100, 80, 20, 35, 130, 75, 35, 70, 14, 50, 25, 65, 25,
80, 70, 36, 50, 75, 100, 30, 37, 100, 80, 55, 50, 250, 67, 100,
70, 70, 80, 85, 70, 35, 70, 30, 25, 40, 50, 55, 70, 70, 55, 60,
8, 175, 35, 40, 45, 55, 85, 70, 90, 50, 80, 45, 0, 130, 55, 30,
60, 40, 70, 50, 85, 65, 60, 40, 8, 100, 25, 20, 100, 250, 50,
18, 250, 250, 40, 40, 40, 70), OG = c(1044, 1041.7, 1040, 1060,
1069, 1045, 1046, 1068, 1079, 1052, 1047, 1046, 1067, 1098, 1058,
1076, 1093, 1082, 1047, 1038, 1120, 1013, 1074, 1066, 1007, 1068,
1049, 1040, 1102, 1087, 1067, 1076, 1105, 1085, 1065, 1048.5,
1112, 1096, 1066, 1080, 1048, 1090, 1048, 1069, 1067, 1095, 1083,
1080, 1064, 1080, 1043, 1095, 1056, 1077, 1049, 1050, 1042, 1026,
1041, 1081, 1113.5, 1050, 1070, 1042, 1096, 1073, 1113, 1040,
1063, 1067, 1032, 1048, 1045, 1068, 1098, 1040, 1057, 1081, 1039,
1110, 1055, 1076, 1060, 1075, 1130, 1078, 1055, 1067, 1060, 1098,
1058, 1046, 1078, 1080, 1050, 1063, 1068, 1096, 1078, 1049, 1067,
1055, 1013, 1094, 1060, 1013, 1050, 1053, 1072, 1042.9, 1084,
1085, 1120, 1072, 1064, 1083, 1039, 1053, 1060, 1068, 1045, 1150,
1093, 1098, 1052, 1048, 1043, 1075, 1067, 1033, 1061, 1156, 1068,
1047, 1043, 1064, 1097, 1045, 1068, 1065, 1064, 1064, 1045, 1090,
1069, 1125, 1063, 1027, 1069, 1032.5, 1044, 1060, 1050, 1128,
1108, 1076, 1059, 1056, 1007, 1072, 1053, 1084, 1048, 1053, 1074,
1066, 1120, 1104, 1067, 1089, 1069, 1065, 1052, 1068, 1062, 1048,
1066, 1053, 1094, 1069, 1088, 1045, 1007, 1015, 1008, 1025, 1015,
1065, 1016, 1010, 1065, 1065, 1045, 1045, 1045, 1067), EBC = c(20,
15, 8, 30, 10, 15, 12, 22, 120, 200, 140, 62, 219, 70, 25, NA,
36, 12, 8, 50, 100, 19, 90, 30, 30, 30, 44, NA, 64, 40, 30, 16,
300, 40, 13, 65, 20, 111, 30, 80, 14, 300, 40, 60, 30, 250, 19.5,
97, 12, 46, 15, 23, 14, 15, 110, 11.5, 17, 197, 45, 12, 250,
23, 40, 30, 115, 59, 400, 12, 24, 30, 2, 44, 25, 30, 130, 25,
10, 15, 18, 158, 30, 30, 25, 240, 24, 90, 15, 30, 30, 30, 54,
25, 70, 200, 8, 15, 250, 115, 31.2, 45, 15, 200, 19, 400, NA,
19, 60, 177.3, 200, 18, 20, 40, 100, 15, 12, 180, 6, 25, 14,
30, 30, 57, NA, 164, 10, 16, 10, 195, 30, 57, 20, 128, 15, 12,
10, 12, 65, 20, 150, 15, 19, 12, 30, 190, 50, 400, 30, 10, 30,
42, 19, 35, 17, 300, 79, 30, 50, 17, 9, 40, 25, 190, 35, 165,
35, 30, 100, 38, 71, 15, 50, 14, 200, 86, 230, 13, 30, 200, 400,
60, 25, 18, 8, 500, 25, 67, 300, 15, 78.8, 13, 17, 104, 18, 18,
18, 20), PH = c(4.4, 4.4, 3.2, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4,
4.2, 5.2, 4.4, 4.4, 4.4, 5.2, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4,
4.4, 4.4, 4.4, 4.4, 4.4, 3.2, 4.4, 4.4, 4.4, 4.4, 4.3, 4.4, 4.4,
4.4, 4.4, 4.4, 4.4, 4.4, 4.2, 4.4, 4.4, 4.2, 4.4, 4.4, 4.4, 4.4,
4.4, 4.5, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 5.2, 3.2, 5.2,
4.4, 4.4, 4.4, 5.2, 4.4, 4, 4.4, 4.2, 4.4, 4.4, 4.4, 4.4, 4.4,
4.4, 4.4, 3.5, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4,
4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 5.2, 5.2, 4.2, 4.4, 4.4, 4.2,
4.4, 4.4, 4.4, 4.3, 3.2, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4,
4.4, 4.4, 5.2, 5.2, 4.4, 5.2, 4.4, 4.4, 4.4, 4.4, 4.4, 5.2, 5.2,
4.2, 4.5, 4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.2, 4.4, 4.4, 4.2, 4.4,
4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 4.3, 4.4, 4.2, 4.4, 4.4, 4.4, 4.4,
4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 3.2, 4.4, 4.4, 4.5, 4.4, 5.2, 5.2,
4.4, 4.4, 4.4, 4.4, 4.4, 4.4, 5.2, 5.2, 4.4, 4.4, 4.4, 4.4, 4.4,
4.3, 4.2, 4.4, 4.2, 3.2, 4.4, 4.2, 4, 4.4, 4.4, 4.2, 4.2, 4.4,
4.4, 4.2, 4.2, 4.2, 4.4), AttenuationLevel = c(75, 76, 83, 80,
67, 88.9, 78, 80.9, 74.7, 77, 74.5, 72.8, 70.1, 87, 79.3, 83,
68, 86, 79, 68.4, 98, 79.7, 79.7, 77.3, 28.6, 82.1, 90, 83, 102,
81.2, 82.1, 83, 76.2, 81.2, 85, 79.4, 100, 79.17, 77.3, 85, 89.6,
84.4, 72.9, 82.6, 82.1, 76.8, 83, 76, 84, 70, 81.4, 83.2, 82.1,
79.2, 79, 84, 76.2, 74.5, 75.6, 74, 76.8, 76, 81.4, 76.2, 79.2,
79.5, 84.1, 79.5, 82.6, 82.1, 88, 72.9, 75.6, 82.1, 79.6, 70,
87, 93.8, 76.9, 82, 74.6, 82.9, 83.3, 81.3, 102.3, 83.3, 78,
82.1, 80, 70, 74, 73.9, 83.3, 81.3, 87, 84, 70.6, 79.2, 84.6,
81.6, 80.6, 70, 79.7, 73.4, 87, 79.7, 76, 84.9, 79.2, 81, 82.1,
81.2, 98, 90.3, 84, 83.1, 87, 79.3, 83, 82.1, 73.3, 93.3, 80,
79.6, 87, 79, 79.1, 81.3, 82.1, 70.8, 80.3, 80.8, 95.6, 80.7,
83.7, 84, 79.4, 73.9, 78.6, 84.6, 79.7, 84, 82.9, 80, 82.6, 84,
81, 70.4, 82.6, 63.1, 72.7, 76.7, 80, 89, 81.5, 82.9, 81.4, 82.14,
82.5, 80.6, 79.3, 79.8, 77.1, 75.5, 82.4, 77.3, 98, 85, 79, 94.4,
81.1, 87, 73.1, 76.5, 67.7, 79.2, 77.3, 73.6, 73.4, 82.6, 83,
75.6, 78, 84, 75.6, 75.6, 84.4, 84.6, 81, 78.7, 84.6, 84.6, 75.6,
75.6, 75.6, 82), FermentationTempCelsius = c(19L, 18L, 21L, 9L,
10L, 22L, 10L, 19L, 19L, 19L, 19L, 22L, 18L, 17L, 19L, 19L, 19L,
19L, 19L, 19L, 19L, 19L, 18L, 19L, 19L, 19L, 19L, 21L, 21L, 21L,
19L, 21L, 21L, 21L, 9L, 19L, 20L, 21L, 19L, 19L, 22L, 21L, 19L,
18L, 19L, 18L, 19L, 19L, 19L, 12L, 23L, 21L, 10L, 9L, 19L, 19L,
19L, 21L, 19L, 19L, 18L, 18L, 21L, 19L, 20L, 20L, 21L, 10L, 19L,
19L, 21L, 19L, 19L, 19L, 21L, 19L, 20L, 23L, 19L, 21L, 19L, 21L,
19L, 20L, 21L, 21L, 19L, 19L, 19L, 21L, 19L, 9L, 22L, 14L, 20L,
19L, 19L, 20L, 18L, 14L, 19L, 19L, 19L, 21L, 20L, 19L, 19L, 19L,
21L, 10L, 21L, 21L, 19L, 18L, 19L, 21L, 20L, 17L, 20L, 19L, 19L,
22L, 19L, 20L, 20L, 19L, 15L, 19L, 19L, 19L, 19L, 21L, 21L, 10L,
12L, 19L, 21L, 19L, 19L, 21L, 19L, 19L, 20L, 21L, 22L, 21L, 99L,
19L, 19L, 22L, 16L, 19L, 19L, 21L, 18L, 21L, 19L, 19L, 19L, 21L,
17L, 21L, 19L, 19L, 19L, 19L, 19L, 21L, 19L, 23L, 19L, 20L, 19L,
19L, 19L, 19L, 19L, 19L, 21L, 18L, 21L, 19L, 21L, 21L, 12L, 21L,
21L, 21L, 21L, 12L, 21L, 21L, 19L, 19L, 19L, 21L), Yeast = structure(c(1L,
1L, 1L, 3L, 3L, 4L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 2L,
2L, 3L, 1L, 2L, 2L, 1L, 2L, 4L, 2L, 1L, 1L, 1L, 2L, 2L, 1L, 1L,
3L, 4L, 2L, 3L, 3L, 1L, 1L, 2L, 2L, 1L, 2L, 2L, 1L, 2L, 1L, 2L,
2L, 2L, 3L, 1L, 1L, 4L, 1L, 1L, 1L, 2L, 1L, 1L, 4L, 1L, 2L, 2L,
2L, 1L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 3L, 2L, 3L, 1L, 1L, 1L,
2L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 2L, 3L, 2L, 2L, 2L,
2L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 2L, 4L, 1L, 1L, 2L, 1L,
1L, 1L, 2L, 2L, 3L, 3L, 1L, 2L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 2L,
2L, 1L, 1L, 1L, 1L, 3L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 1L,
2L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 4L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 2L, 1L, 2L, 1L, 1L, 2L, 3L, 2L, 2L, 2L, 2L, 3L, 2L, 2L, 1L,
1L, 1L, 2L), .Label = c("Wyeast 1056 - American Ale", "Wyeast 1272 - American Ale II",
"Wyeast 2007 - Pilsen Lager", "Wyeast 3711 - French Saison"), class = "factor")), class = "data.frame", row.names = c(NA,
-196L))
Updated
As #dcarlson recommended, you can run mice on the entire dataframe, then you can use complete to get the whole output dataframe. Then, you can join the new data with your original dataframe.
library(tidyverse)
library(mice)
imi <- mice(data, m=5, maxit=10)
imi_complete <- complete(imi)
res <- data %>%
dplyr::left_join(., imi_complete %>% dplyr::select(Name, ABV, EBC), by = "Name") %>%
dplyr::select(-c(ABV.x, EBC.x)) %>%
dplyr::rename("ABV" = ABV.y, "EBC" = EBC.y)
Output
head(res)
Name IBU OG PH AttenuationLevel FermentationTempCelsius Yeast ABV EBC
1 Buzz 60.0 1044.0 4.4 75.0 19 Wyeast 1056 - American Ale 4.5 20
2 Trashy Blonde 41.5 1041.7 4.4 76.0 18 Wyeast 1056 - American Ale 4.1 15
3 Berliner Weisse With Yuzu - B-Sides 8.0 1040.0 3.2 83.0 21 Wyeast 1056 - American Ale 4.2 8
4 Pilsen Lager 55.0 1060.0 4.4 80.0 9 Wyeast 2007 - Pilsen Lager 6.3 30
5 Avery Brown Dredge 59.0 1069.0 4.4 67.0 10 Wyeast 2007 - Pilsen Lager 7.2 10
6 Electric India 38.0 1045.0 4.4 88.9 22 Wyeast 3711 - French Saison 7.5 15
Old
Since there's no id column in the new dataframe, you can just mutate to replace the columns in the original dataframe with the output from the new dataframe. However, it would be better practice to impute directly into the original dataframe (as suggested by #dcarlson and #r2evans), so that you can ensure that you have the data on the correct rows.
library(tidyverse)
df_orig %>%
dplyr::mutate(ABV = df_new$ABV, EBC = df_new$EBC)
Output
id ABV EBC third
1 1 -61 -58 37.94029
2 2 -80 -67 47.81479
3 3 -62 -66 48.85903
4 4 -69 -78 23.18026
5 5 -51 -77 29.91952
Data
df_orig <-
structure(
list(
id = c(1, 2, 3, 4, 5),
ABV = c(
38.9932923251763,
20.0923723727465,
37.640398349613,
31.4673039061017,
49.192731983494
),
EBC = c(
42.341671793256,
32.936319950968,
33.8184517389163,
21.5938150603324,
22.8182014194317
),
third = c(
37.9402944352478,
47.8147878032178,
48.8590325415134,
23.1802612892352,
29.9195193173364
)
),
class = "data.frame",
row.names = c(NA,-5L)
)
df_new <-
structure(
list(
ABV = c(-61,-80,-62,-69,-51),
EBC = c(-58,-67,-66,-78,-77)
),
class = c("rowwise_df", "tbl_df", "tbl",
"data.frame"),
row.names = c(NA,-5L),
groups = structure(
list(.rows = structure(
list(1L, 2L, 3L, 4L, 5L),
ptype = integer(0),
class = c("vctrs_list_of",
"vctrs_vctr", "list")
)),
row.names = c(NA,-5L),
class = c("tbl_df",
"tbl", "data.frame")
)
)

for loop that lets you pipe in different column names to dplyr pipe

I want to run four linear regressions from four metrics from two sites.
Site DCNSUB is the response variable and DCSSUB is the predictor in the regression.
I only want to regress where I have a complete pair of data for an event.
I do this for one metric at a time using the following dplyr pipe:
mV<-Tile%>% # model V for Volume
select(Event, Site, Volume)%>%
group_by(Event)%>%
filter(!any(is.na(all_of(Volume))))%>% # group by event and remove pairs that are missing volume
ungroup()%>%
mutate(Volume = log(Volume))%>% # take log
pivot_wider(names_from = Site,values_from = Volume) %>% # get responsive and predictor variable data into columns
as.data.frame(.)%>%
lm(DCNSUB~DCSSUB, data = .)
How can incorporate this into a for loop, where each iteration puts a different metric where 'Volume' is in the pipe? Here is my attempt:
for (i in names(Tile[-c(1,2)])){
mX<-Tile%>%
select(Event, Site, i)%>%
group_by(Event)%>%
filter(!any(is.na(all_of(i))))%>% # remove pairs that are missing i, note group by event helps removes the pairs
ungroup()%>%
mutate(i = log(i))%>% # take log
pivot_wider(names_from = Site,values_from = i) %>%# get responsive and predictor variable data into columns
as.data.frame(.)%>%
lm(DCNSUB~DCSSUB, data = .)
}
There have been other posts that use column indexing to call columns, but this doesn't work when trying to mix it with the column I want to remain constant in each loop. Also, those solution are for much less complicated pipes. Any help is appreciated, thanks.
data:
Tile<-structure(list(Event = c("10/17/2019", "10/17/2019", "10/23/2019",
"10/23/2019", "10/27/2019", "10/27/2019", "10/31/2019", "10/31/2019",
"11/24/2019", "11/24/2019", "11/28/2019", "11/28/2019", "12/10/2019",
"12/10/2019", "12/15/2019", "12/15/2019", "12/28/2019", "12/28/2019",
"12/30/2019", "12/30/2019", "1/3/2020", "1/3/2020", "1/12/2020",
"1/12/2020", "1/26/2020", "1/26/2020", "3/3/2020", "3/3/2020",
"3/8/2020", "3/8/2020", "3/13/2020", "3/13/2020", "5/12/2020",
"5/12/2020", "8/5/2020", "8/5/2020", "9/30/2020", "9/30/2020",
"12/1/2020", "12/1/2020", "12/25/2020", "12/25/2020", "1/17/2021",
"1/17/2021", "3/11/2021", "3/11/2021", "4/16/2021", "4/16/2021",
"4/22/2021", "4/22/2021", "4/30/2021", "4/30/2021", "5/6/2021",
"5/6/2021", "7/2/2021", "7/2/2021", "7/3/2021", "7/3/2021", "7/9/2021",
"7/9/2021", "7/13/2021", "7/13/2021", "7/14/2021", "7/14/2021",
"7/18/2021", "7/18/2021", "7/19/2021", "7/19/2021", "7/21/2021",
"7/21/2021", "7/31/2021", "7/31/2021", "8/2/2021", "8/2/2021",
"8/20/2021", "8/20/2021", "9/9/2021", "9/9/2021", "9/24/2021",
"9/24/2021", "10/17/2021", "10/17/2021", "10/22/2021", "10/22/2021",
"10/25/2021", "10/25/2021", "10/27/2021", "10/27/2021", "11/1/2021",
"11/1/2021"), Site = structure(c(3L, 1L, 3L, 1L, 3L, 1L, 3L,
1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L,
1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L,
1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L,
1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L,
1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L, 1L, 3L,
1L, 3L, 1L), .Label = c("DCNSUB", "DCNSUR", "DCSSUB", "DCSSUR"
), class = "factor"), TP.conc = c(1550, 2770, NA, NA, 1650, NA,
1810, NA, 666, 468, 1190, 1120, 574, 538, 487, 580, NA, 238,
610, 378, 398, 306, 744, 766, 447, 468, 504, 413, 384, 377, 714,
542, 927.2, 1000.1, 265.4, 285.1, 1527, 1764.5, NA, 460.9, NA,
469.8, NA, 172.8, 454, 432.8, 524.4, 476.4, 300, 303.6, 588.7,
598.1, 852.5, 797.6, 144.4, 122.1, 170.6, 110.1, 301.8, 328.8,
363.3, 498.5, 283.7, 104.9, 314.1, 327.6, 436.6, 262.1, 398.1,
358, 312, 251, 598, 831, 348, 456, 345, 240, 648, 949, 852, 1260,
643, 549, 712, 999, 982, 1100, 1240, 1555), TP.load = c(180.4,
NA, NA, NA, 67.6, NA, 201.5, NA, NA, NA, 53.3, 131.7, 12.1, 38.1,
7, 21.6, NA, NA, 21.2, 44.4, 6.1, 10.9, 79.7, 189.9, 10.5, 27.9,
84.2, 178.7, 13.6, 46.3, 14.4, 26.2, 11.4, 35, 4.2, 10.1, 4.6,
18.9, NA, 58.3, NA, 140.9, NA, 7.6, 181.8, 238.2, 72.5, 97.7,
18.5, 30.6, 121.4, 177.7, 114.1, 166.3, 22.8, 21.9, 15.1, 9.2,
25.8, 29.4, 7.6, 12.3, 3, 1.7, 58.5, 71, 23.3, 15.7, 32.7, 39.7,
3.1, 3.4, 67.2, 126, 49.1, 79.1, 8.6, 5.8, 8.7, 15.3, 38.62755,
62.40857143, NA, NA, NA, NA, NA, NA, NA, NA), SRP.conc = c(NA,
NA, NA, NA, 403, NA, NA, NA, NA, NA, NA, NA, 245, 234, 238, 197,
NA, 118, NA, NA, NA, NA, NA, 270, 121, 135, NA, NA, NA, NA, NA,
NA, 596.7, 635.6, 48, 85.9, 514.8, 572.7, NA, 161.5, NA, 163.3,
NA, 46.4, 96.9, 127, 83.1, 92.3, 53.5, 60.7, 111.7, 133.7, 132.2,
164.1, 50.1, 49.1, 54, 42.5, 122.5, 131.9, 104.2, 194.5, 84.6,
34.8, 90.2, 106.6, NA, NA, 129.9, 118.2, 62.2, 84.7, 105, 152,
92.6, 66, 45.9, 50.5, 66.2, 167, 264, 412, 203, 175, 352, 560,
503, 625, 621, 836), SRP.load = c(NA, NA, NA, NA, 16.5, NA, NA,
NA, NA, NA, NA, NA, 5.2, 16.6, 3.4, 7.3, NA, NA, NA, NA, NA,
NA, NA, 66.9, 2.8, 8, NA, NA, NA, NA, NA, NA, 7.3, 22.2, 0.8,
3.1, 1.6, 6.1, NA, 20.4, NA, 49, NA, 2, 38.8, 69.9, 11.5, 18.9,
3.3, 6.1, 23, 39.7, 17.7, 34.2, 7.9, 8.8, 4.8, 3.6, 10.5, 11.8,
2.2, 4.8, 0.9, 0.6, 16.8, 23.1, NA, NA, 10.7, 13.1, 0.6, 1.2,
11.8, 23, 13.1, 11.4, 1.1, 1.2, 0.9, 2.7, 12, 20.4, NA, NA, NA,
NA, NA, NA, NA, NA), Volume = c(11.64, NA, 1.87, 4.5, 4.1, 9.69,
11.13, 34, NA, NA, 4.48, 11.76, 2.1, 7.08, 1.45, 3.73, NA, NA,
3.47, 11.74, 1.52, 3.56, 10.71, 24.79, 2.34, 5.96, 16.71, 43.28,
3.54, 12.29, 2.02, 4.84, 1.22, 3.5, 1.59, 3.56, 0.3, 1.07, NA,
12.66, NA, 29.99, NA, 4.37, 40.04, 55.03, 13.82, 20.51, 6.18,
10.07, 20.62, 29.72, 13.38, 20.85, 15.76, 17.96, 8.82, 8.36,
8.56, 8.94, 2.1, 2.46, 1.07, 1.58, 18.64, 21.67, 5.33, 6, 8.22,
11.09, 0.99, 1.36, 11.23, 15.16, 14.11, 17.34, 2.48, 2.4, 1.34,
1.61, 4.53, 4.95, NA, NA, NA, NA, NA, NA, NA, NA)), row.names = c(1L,
4L, 5L, 8L, 9L, 12L, 13L, 16L, 17L, 20L, 21L, 24L, 25L, 28L,
29L, 32L, 33L, 36L, 37L, 40L, 41L, 44L, 45L, 48L, 49L, 52L, 53L,
56L, 57L, 60L, 61L, 64L, 65L, 68L, 69L, 72L, 73L, 76L, 77L, 80L,
81L, 84L, 85L, 88L, 89L, 92L, 93L, 96L, 97L, 100L, 101L, 104L,
105L, 108L, 109L, 112L, 113L, 116L, 117L, 120L, 121L, 124L, 125L,
128L, 129L, 132L, 133L, 136L, 137L, 140L, 141L, 144L, 145L, 148L,
149L, 152L, 153L, 156L, 157L, 160L, 161L, 164L, 165L, 168L, 169L,
172L, 173L, 176L, 177L, 180L), class = "data.frame")
We may use map/lapply to loop as with for loop it needs a list to store the output which can be created of course, however, the output from map/lapply is itself a list
library(purrr)
library(dplyr)
library(tidyr)
# // loop over the names
out <- map(names(Tile)[-(1:2)], ~ Tile %>%
# // select the columns of interest along with looped column names
select(Event, Site, all_of(.x))%>%
# // grouped by Event and remove groups based on the NA in the looped column
group_by(Event)%>%
filter(!any(is.na(.data[[.x]])))%>%
ungroup()%>%
# // convert the column looped to its `log`
mutate(!! .x := log(.data[[.x]]))%>%
# // reshape from long to wide
pivot_wider(names_from = Site,values_from = all_of(.x)) %>%
# // build the linear model
lm(DCNSUB~DCSSUB, data = .)
)
-output
> out
[[1]]
Call:
lm(formula = DCNSUB ~ DCSSUB, data = .)
Coefficients:
(Intercept) DCSSUB
-1.475 1.231
[[2]]
Call:
lm(formula = DCNSUB ~ DCSSUB, data = .)
Coefficients:
(Intercept) DCSSUB
0.5418 0.9812
[[3]]
Call:
lm(formula = DCNSUB ~ DCSSUB, data = .)
Coefficients:
(Intercept) DCSSUB
0.09282 1.00866
[[4]]
Call:
lm(formula = DCNSUB ~ DCSSUB, data = .)
Coefficients:
(Intercept) DCSSUB
0.7099 0.9064
[[5]]
Call:
lm(formula = DCNSUB ~ DCSSUB, data = .)
Coefficients:
(Intercept) DCSSUB
0.8000 0.8535
From the list output, either use tidy (from broom) to convert to a tibble output or extract the components separately by looping (It can be done in the same map looped earlier though)
map_dfr(out, ~ {
v1 <- summary(.x)
tibble(pval = v1$coefficients[,4][2], MSE = v1$sigma^2)})
# A tibble: 5 × 2
pval MSE
<dbl> <dbl>
1 7.23e-17 0.0773
2 5.81e-13 0.267
3 3.49e-12 0.120
4 3.77e-10 0.238
5 2.10e-15 0.156

ggstance(), plotting together boxplot and density plot - R

I'm trying to do a boxplot and a density plot for each numeric variable in the dataframe. I'm adapting this solution to my problem. However, I'm trying to plot for each numeric variable in the dataframe (no for just one as in the solution above):
df %>%
select_if(is.numeric) %>%
gather(na.rm=TRUE) %>%
ggplot(aes(x = value, y = -0.5)) +
geom_boxploth() +
geom_density(aes(x = value), inherit.aes = FALSE) +
facet_wrap(~key, scales = 'free')
And the main problem relies in the scales of each variable. I have tried with free_x, free_y, and free in the scales argument from facet_wrap(), and all of them gives me some esthetic problems:
scales="free": The width of boxplot changes in the graphs, making it kind of messy.
scales="free_x": The plots are almost perfect, the only problem
relies that some density plots aren't readable.
scales="free_y": The worst one.
As the numeric variables have very different ranges, the x-axis needs to be free in order to plot an understandable boxplot. But if I fix the y-axis (with scales="free_x") a density plot with a peak of, for example 0.1, will be shown as a straight line in the fixed axis from 0 to 1 (air_temperature variable, for example).
The closest solution I have achieved is with "free_x" but I haven't been able to make the density plots more readable.
Any suggestions?
The data (100 rows):
df <- structure(list(site_id = c("2", "13", "2", "2", "14", "13", "9",
"2", "4", "13", "3", "13", "6", "13", "13", "14", "11", "13",
"14", "8", "2", "2", "0", "15", "14", "14", "5", "15", "3", "4",
"13", "13", "7", "9", "8", "2", "9", "13", "13", "13", "3", "0",
"6", "2", "4", "2", "3", "3", "13", "8", "2", "13", "4", "8",
"7", "5", "9", "2", "13", "5", "2", "9", "3", "9", "3", "13",
"13", "1", "9", "14", "8", "13", "13", "14", "13", "7", "13",
"5", "3", "14", "9", "15", "9", "9", "11", "3", "9", "13", "2",
"9", "9", "3", "9", "9", "14", "9", "9", "3", "2", "13"), building_id = c("187",
"1137", "214", "254", "1234", "1218", "878", "236", "631", "1169",
"472", "1148", "747", "1179", "1152", "1233", "1031", "1154",
"1242", "826", "271", "217", "62", "1341", "1245", "1320", "660",
"1352", "526", "632", "1204", "1083", "797", "891", "858", "252",
"879", "1145", "1154", "1158", "372", "76", "775", "271", "607",
"247", "337", "353", "1089", "826", "168", "1114", "566", "836",
"796", "662", "988", "191", "1200", "697", "207", "980", "343",
"966", "353", "1162", "1217", "115", "925", "1319", "848", "1139",
"1075", "1253", "1217", "798", "1220", "741", "491", "1226",
"945", "1429", "952", "916", "1032", "380", "919", "1112", "256",
"884", "890", "295", "965", "987", "1224", "946", "928", "350",
"280", "1143"), primary_use = c("Education", "Office", "Education",
"Entertainment/public assembly", "Education", "Entertainment/public assembly",
"Lodging/residential", "Entertainment/public assembly", "Education",
"Education", "Education", "Office", "Education", "Entertainment/public assembly",
"Office", "Education", "Education", "Lodging/residential", "Office",
"Public services", "Education", "Education", "Lodging/residential",
"Education", "Healthcare", "Entertainment/public assembly", "Entertainment/public assembly",
"Office", "Public services", "Education", "Office", "Education",
"Education", "Education", "Other", "Education", "Education",
"Manufacturing/industrial", "Lodging/residential", "Public services",
"Education", "Education", "Office", "Education", "Education",
"Education", "Entertainment/public assembly", "Education", "Office",
"Public services", "Education", "Other", "Education", "Public services",
"Education", "Entertainment/public assembly", "Office", "Education",
"Entertainment/public assembly", "Education", "Public services",
"Entertainment/public assembly", "Public services", "Education",
"Education", "Office", "Education", "Education", "Education",
"Entertainment/public assembly", "Office", "Office", "Office",
"Education", "Education", "Education", "Public services", "Education",
"Education", "Education", "Office", "Education", "Education",
"Education", "Education", "Education", "Education", "Office",
"Education", "Education", "Education", "Education", "Lodging/residential",
"Education", "Office", "Education", "Education", "Education",
"Entertainment/public assembly", "Office"), square_feet = c(44203L,
27452L, 91273L, 254766L, 46037L, 268480L, 41241L, 144086L, 23533L,
155439L, 69400L, 861524L, 30531L, 143228L, 118858L, 43143L, 93206L,
262156L, 23871L, 19446L, 71421L, 282946L, 42731L, 18342L, 35354L,
34565L, 5447L, 42755L, 7636L, 41297L, 38382L, 100813L, 764237L,
50846L, 1566L, 4314L, 110235L, 35201L, 262156L, 294812L, 49100L,
128887L, 104355L, 71421L, 34825L, 64560L, 22334L, 99700L, 62837L,
19446L, 183460L, 64810L, 2010L, 8168L, 226042L, 12777L, 24463L,
78268L, 545351L, 18697L, 99700L, 34819L, 22000L, 393530L, 99700L,
72958L, 73044L, 129716L, 54405L, 287419L, 8552L, 336650L, 72709L,
134748L, 73044L, 409028L, 381221L, 14025L, 66600L, 27995L, 332447L,
40461L, 218024L, 51778L, 127632L, 95100L, 31233L, 190471L, 16744L,
38598L, 202937L, 83400L, 45086L, 166395L, 23481L, 177216L, 179115L,
83800L, 105505L, 96612L), year_built = c(1950L, NA, 1951L, 1989L,
NA, NA, NA, 1989L, 1906L, NA, 1911L, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, 2003L, 2001L, 1960L, NA, NA, 1976L, NA, NA, 1959L,
NA, NA, 1979L, NA, NA, 1907L, NA, NA, NA, NA, 1911L, 2009L, NA,
NA, 1999L, 1965L, 1977L, 1955L, NA, NA, 2005L, NA, 1957L, NA,
1965L, 1976L, NA, 1964L, NA, 1919L, NA, NA, NA, NA, 1955L, NA,
NA, 1968L, NA, NA, NA, NA, NA, NA, NA, 1970L, NA, 1966L, 1970L,
NA, NA, 2002L, NA, NA, NA, 1927L, NA, NA, NA, NA, NA, 1942L,
NA, NA, NA, NA, NA, 1944L, 2008L, NA), floor_count = c(NA, NA,
NA, NA, NA, NA, NA, NA, 3L, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, 1L, NA, NA, NA, NA, NA, NA, 1L, NA, NA, 6L, NA, NA, 13L,
NA, 1L, NA, NA, NA, NA, NA, NA, NA, NA, NA, 2L, NA, NA, NA, NA,
1L, NA, NA, 1L, 1L, 2L, 2L, NA, NA, NA, 2L, NA, NA, NA, NA, NA,
NA, NA, 6L, NA, NA, 1L, NA, NA, NA, NA, 21L, NA, 1L, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA), meter = c("hotwater", "electricity", "chilledwater",
"electricity", "chilledwater", "chilledwater", "chilledwater",
"hotwater", "electricity", "electricity", "electricity", "electricity",
"chilledwater", "electricity", "steam", "chilledwater", "chilledwater",
"steam", "hotwater", "electricity", "electricity", "hotwater",
"electricity", "steam", "electricity", "electricity", "electricity",
"chilledwater", "electricity", "electricity", "steam", "chilledwater",
"steam", "electricity", "electricity", "electricity", "steam",
"steam", "chilledwater", "electricity", "electricity", "chilledwater",
"electricity", "electricity", "electricity", "hotwater", "electricity",
"electricity", "electricity", "electricity", "electricity", "electricity",
"electricity", "electricity", "steam", "electricity", "electricity",
"electricity", "steam", "electricity", "electricity", "electricity",
"electricity", "electricity", "electricity", "chilledwater",
"electricity", "electricity", "electricity", "electricity", "electricity",
"chilledwater", "steam", "hotwater", "chilledwater", "steam",
"steam", "electricity", "electricity", "electricity", "steam",
"electricity", "chilledwater", "steam", "hotwater", "electricity",
"electricity", "steam", "chilledwater", "electricity", "chilledwater",
"electricity", "electricity", "chilledwater", "hotwater", "steam",
"steam", "electricity", "electricity", "electricity"), timestamp = structure(c(1456984800,
1464206400, 1478361600, 1464498000, 1472634000, 1465473600, 1480856400,
1473026400, 1464656400, 1464451200, 1454306400, 1464332400, 1452088800,
1473721200, 1462356000, 1475690400, 1453737600, 1456063200, 1477494000,
1470546000, 1466690400, 1479898800, 1467774000, 1470502800, 1464285600,
1479355200, 1475762400, 1473930000, 1452841200, 1468245600, 1470355200,
1465923600, 1461913200, 1456610400, 1476234000, 1452837600, 1469300400,
1466226000, 1477594800, 1453582800, 1461042000, 1460062800, 1470020400,
1467921600, 1476741600, 1470337200, 1482840000, 1472911200, 1467972000,
1460707200, 1475946000, 1466064000, 1464739200, 1471417200, 1461250800,
1462464000, 1475593200, 1458612000, 1461812400, 1464490800, 1464134400,
1453935600, 1452762000, 1476414000, 1480496400, 1469430000, 1464714000,
1463119200, 1472698800, 1477155600, 1456045200, 1480888800, 1475528400,
1463544000, 1463274000, 1455429600, 1482138000, 1471478400, 1461909600,
1466841600, 1457560800, 1463551200, 1481346000, 1453608000, 1478336400,
1460030400, 1458090000, 1464274800, 1478458800, 1478559600, 1470582000,
1453190400, 1467662400, 1478887200, 1461481200, 1460746800, 1459778400,
1479168000, 1461967200, 1482433200), class = c("POSIXct", "POSIXt"
), tzone = "UTC"), meter_reading = c(14.6536, 29, 6.1193, 179.17,
487.708, 90.1306, 92.9855, 0, 7.0825, 0, 77.34, 1018.46, 0, 1204,
6148.44, 0, 0, 5781.25, 162.07, 8, 140.2, 5.8614, 600.926, 366.595,
78.8438, 71.7563, 13.765, 63.5949, 27.84, 66.5, 143.555, 550.446,
843.81, 27, 8.8333, 33.34, 286.7, 271.484, 0, 163.625, 32.69,
4305.46, 133.25, 120.94, 20.75, 43.9606, 88.04, 100.74, 321.53,
56.25, 407.15, 3.6, 0.563, 4.0833, 0, 12.1, 36, 60.11, 1636.54,
3.274, 108.52, 18, 21.92, 500, 136.76, 100.626, 123.881, 449,
15, 445.716, 0, 1219.51, 0, 1127.07, 0, 3429.23, 20414.1, 2.1,
54.12, 40.1146, 460.55, 24.525, 184.705, 76.25, 161.753, 137.54,
18, 2843.75, 3.4817, 51, 2026.83, 64.53, 0, 763.578, 340.092,
82.35, 250.1, 88.15, 16.02, 68), air_temperature = c(21.1, 23.3,
20, 29.4, 22.2, 18.3, 10, 38.3, 20.6, 18.9, 8.3, 21.1, -7.2,
23.9, 8.3, 19.4, -3, -2.8, 8.3, 23.9, 33.9, 11.7, 28.3, 26.7,
31.1, 10.6, 14, 5, 5.6, 15.6, 26.7, 21.7, 1.2, 22.2, 22.8, 10,
37.2, 23.9, 8.3, -5.6, 16.1, 27.2, 23.3, 38.3, 20.6, 33.9, 13.3,
23.9, 19.4, 20, 30.6, 18.3, 23.9, 25, 14.8, 18, 25, 30.6, 7.2,
12, 31.1, 13.3, -2.2, 23.9, 13.3, 21.7, 20.6, 11.4, 29.4, 10,
13.3, 2.8, 23.9, 11.1, 9.4, -27.2, -15, 17, 8.9, 18.9, 15.6,
3.3, 5, 8.3, 3.3, 12.8, 27.8, 20.6, 23.9, 21.7, 30, -8.9, 37.2,
19.4, 8.3, 23.9, 16.1, 11.7, 26.7, 1.1), cloud_coverage = c(4L,
NA, 2L, 0L, NA, 8L, NA, 0L, 2L, NA, 6L, NA, 0L, NA, 0L, 0L, NA,
NA, 0L, NA, 4L, NA, NA, NA, 0L, NA, NA, 0L, NA, 0L, 2L, NA, NA,
0L, NA, 2L, 0L, NA, NA, NA, NA, NA, 0L, 2L, 2L, 4L, 6L, NA, NA,
NA, 4L, NA, 2L, 2L, NA, 0L, NA, NA, NA, 0L, 0L, 0L, 6L, NA, 8L,
0L, NA, NA, 0L, NA, NA, NA, 2L, 0L, 4L, NA, 0L, NA, 8L, NA, NA,
0L, NA, 0L, NA, 8L, 0L, 2L, 2L, NA, 4L, 0L, 0L, 2L, 0L, 0L, 0L,
8L, 4L, 2L), dew_temperature = c(-1.7, 18.3, 12.8, 1.1, 21.1,
16.7, 8.9, -2.8, 11.7, 15, 2.2, 11.7, -11.1, 16.7, 0, 8.9, -5.8,
-5.6, -3.3, 22.2, 8.9, 7.2, 25.6, 16.7, 8.3, 6.1, 5, 4.4, -1.1,
11.7, 15.6, 17.2, -6.9, 8.9, 19.4, 2.8, 21.1, 15.6, 5, -10, 11.7,
12.8, 21.7, 12.8, 11.7, 21.1, 11.7, 16.7, 16.7, 18.9, 11.1, 15,
11.7, 23.9, -1.9, 3, 21.1, -6.1, -0.6, 10, -1.1, -6.7, -12.2,
20.6, 13.3, 15.6, 16.1, 9.6, 22.2, 5, 11.7, 0, 10.6, 10, -8.9,
-32.3, -20, 16, 7.2, 16.7, 13.9, 2.2, -3.3, 0, 2.2, 10.6, 7.2,
13.9, 11.1, 20.6, 23.9, -19.4, 22.2, 15, -4.4, 15.6, 9.4, 3.3,
2.2, -7.2), precip_depth_1_hr = c(0L, -1L, 0L, 0L, 0L, -1L, 3L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, NA, 0L, 0L, 0L, 0L, 0L, -1L,
NA, 0L, 0L, NA, NA, 0L, 0L, 0L, -1L, NA, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, NA, 0L, -1L, 0L, 0L, -1L, 0L, 0L, 0L,
0L, NA, NA, 0L, 0L, 0L, NA, 0L, 0L, 0L, -1L, 0L, 0L, -1L, NA,
0L, -1L, 0L, 0L, 0L, 0L, 0L, NA, 0L, NA, 0L, 0L, -1L, NA, 0L,
0L, NA, 8L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L), sea_level_pressure = c(1014.2, 1009.7, 1016.2, 1007.2, 1015.7,
1010.6, 1015.1, 1001.9, 1013.4, 1007.6, 1010.4, 1010.3, 1036.1,
NA, 1013.5, 1024.8, 1023.2, 1023.4, 1030.4, 1015.2, 1009.3, 1017.1,
1020.3, 1009, 1017, 1011.8, NA, 1026.5, 1014.2, 1014.7, 1008.5,
NA, 1021.1, 1020.9, 1019.5, 1015.9, 1013.3, 1017.6, 1022.3, 1016.5,
1019.5, 1011.6, 1016.8, 1009.8, 1017.2, 1009.1, 1015, 1018.3,
1007.9, 1012.7, 1011.5, 1012.2, 1009.6, 1021.2, 1016, NA, 1010,
1008.9, 1012.4, NA, 1008.6, 1024.5, 1015.5, 1019.2, 1012.2, 1014.9,
1011.2, 1007.9, 1013.2, 999.7, 1021.4, 1008.6, 1013.5, 1019.8,
1017.9, 1032.6, 1030.4, NA, 1016.2, 1019.2, 1007.2, 1022, 1034.1,
1022, 1018.1, 1003.2, 1009, 1009, 1015.6, 1017.4, 1014, 1024.5,
1012.2, 1024.8, 1015.1, 1011.1, 1021.9, 1016.5, 1007.8, 1023.6
), wind_direction = c(100L, 110L, 110L, 260L, 240L, 160L, 340L,
240L, 310L, 20L, 210L, 180L, 0L, 300L, 360L, 110L, 60L, 0L, 350L,
160L, 80L, 160L, 0L, 290L, 250L, 290L, 100L, 70L, 210L, 0L, 310L,
110L, 70L, 160L, 20L, 80L, NA, 170L, 150L, 170L, 180L, 260L,
190L, 130L, 270L, 160L, 210L, 30L, 230L, 20L, 90L, 20L, 300L,
350L, 90L, 110L, 180L, 280L, 80L, 60L, 290L, 330L, 250L, 0L,
20L, 290L, 230L, 20L, 0L, 290L, 0L, 220L, 150L, 0L, 330L, 280L,
200L, NA, 50L, 30L, NA, 70L, 0L, 220L, 210L, 170L, 350L, 230L,
0L, NA, 230L, 300L, 200L, 310L, 350L, NA, 210L, 230L, 270L, 230L
), wind_speed = c(3.6, 5.1, 3.6, 7.7, 1.5, 5.7, 2.6, 3.1, 5.7,
1.5, 3.1, 3.1, 0, 4.6, 2.1, 3.1, 1.5, 0, 5.7, 1.5, 3.6, 1.5,
0, 6.7, 4.6, 2.6, 6.2, 1.5, 1.5, 0, 7.7, 3.1, 3.1, 5.1, 3.6,
2.1, 2.1, 5.7, 5.1, 6.7, 3.1, 6.7, 2.1, 2.6, 5.7, 4.1, 7.2, 10.3,
3.1, 2.1, 4.6, 4.1, 5.1, 1.5, 1.5, 4.6, 1.5, 4.6, 11.8, 3.1,
6.7, 3.6, 1.5, 0, 2.1, 2.6, 4.6, 4.1, 0, 6.7, 0, 4.6, 6.7, 0,
6.2, 3.6, 4.6, 2.6, 3.6, 1.5, 2.6, 2.6, 0, 1.5, 1.5, 5.1, 2.1,
5.1, 0, 2.6, 2.6, 3.1, 4.6, 2.1, 4.1, 2.1, 1.5, 1.5, 5.7, 4.6
)), row.names = c(NA, 100L), class = "data.frame")
geom_density(), or more accurately stat_density() also makes available computed aesthetics. Using these, you can set geom_density(aes(x = value, y = stat(density))) to get uniform kernel density estimates:
df %>%
select_if(is.numeric) %>%
gather(na.rm=TRUE) %>%
ggplot(aes(x = value, y = -0.5)) +
geom_boxploth() +
geom_density(aes(x = value, y = stat(scaled)), inherit.aes = FALSE) +
facet_wrap(~key, scales = 'free')
This may resolve your issues with the axes.
Of note, due to the merging of this pull request, it seems likely that we wouldn't need ggstance a lot anymore in the future.

R ggplot2 grid labeling

I've been asked to make a bar plot from pollution data. Example data can be found here. Data structure is as follows
str(datos) 'data.frame': 55 obs. of 10 variables:
$ PROVINCIA : int 46 46 46 46 46 46 46 46 46 46 ...
$ ESTACION : Factor w/ 55 levels "Alacant-El_Pla",..: 5 1 2 3 8 23 24 21 31 22 ...
$ MAXIMO_HORARIO : num 99.5 88.5 88.5 90 97.5 87.3 96 92.5 88 20 ...
$ PROMEDIO_DIARIO : num NA NA NA NA NA NA NA NA NA NA ...
$ MAXIMO_OCTOHORARIO : num 103.9 83.1 80.9 75.7 95.1 ...
$ VARIACION_MAX_HOR : num -25.2 -6.5 -6.7 -1.2 -13.2 -15.4 -12.7
-29.5 -16.3 NA ...
$ VARIACION_PRM_DIA : num NA NA NA NA NA NA NA NA NA NA ...
$ OSCILACION_DIARIO : num 16.5 63.7 53.3 62 26.8 31.3 29.2 15 52 20 ...
$ ESTACIONALIDAD_MAX : num -38.2 -39.6 -36.8 -38.8 -37.6 -51.8 -35.6 -40.3 -42.9 -86.5 ...
$ ESTACIONALIDAD_MAX-1: num NA NA NA NA NA NA NA NA NA NA ...
I've tried to use ggplot2 geom_bar geometry and facetting with the following code
datos=read.csv("data.csv",header=T,sep=",", na.strings="-99.9")
ggplot(datos, aes(ESTACION,MAXIMO_HORARIO, fill = factor(MAXIMO_HORARIO))) +
geom_bar(stat="identity") +
theme(axis.text.x = element_text(angle=90, size=10)) +
facet_grid(PROVINCIA ~ .)
obtaining this output
This is on the right way but I would like that every facet (group) shows its own values and not empty space that correspond to data in another facet, and also with the right labels in each grid. I can split data into three parts and produce three different plots but I'd like to build just a single file with the three plots in it.
Desired output would look like
EDIT: Output of dput(datos)
**>
dput(datos)
structure(list(PROVINCIA = c(46L, 46L, 46L, 46L, 46L, 46L, 46L,
46L, 46L, 46L, 46L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L,
12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 12L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L), ESTACION = structure(c(5L, 1L, 2L, 3L,
8L, 23L, 24L, 21L, 31L, 22L, 41L, 27L, 12L, 13L, 14L, 15L, 16L,
18L, 28L, 29L, 19L, 37L, 39L, 26L, 49L, 52L, 53L, 54L, 55L, 4L,
7L, 6L, 9L, 10L, 11L, 17L, 20L, 33L, 25L, 30L, 32L, 36L, 35L,
34L, 38L, 42L, 43L, 44L, 45L, 46L, 47L, 48L, 50L, 51L, 40L), .Label = c("Alacant-El_Pla",
"Alacant-Florida_Babel", "Alacant-Rabassa", "Albalat_dels_Tarongers",
"Alcoi-Verge_dels_Lliris", "Algar_de_Pal", "Alzira", "Benidorm",
"Benig", "Bull", "Burjassot-Facultats", "Burriana", "Castell1",
"Castell2", "Castell3", "Castell4", "Caudete_de_las_Fuentes",
"Cirat", "Coratxar", "Cortes_de_Pall", "Elda-Lacy", "El_Pin",
"Elx-Agroalimentari", "Elx-Parc_de_Bombers", "Gandia", "La_Vall_d",
"Lluce", "Morella", "Onda", "Ontinyent", "Orihuela", "Paterna-CEAM",
"Quart_de_Poblet", "Sagunt-CEA", "Sagunt-Nord", "Sagunt-Port",
"Sant_Jordi", "Torrebaja", "Torre_Endom", "Torrent-El_Vedat",
"Torrevieja", "Val1", "Val2", "Val3", "Val4", "Val5", "Val6",
"Val7", "Vilafranca", "Vilamarxant", "Villar_del_Arzobispo",
"Vinaros", "VinarosP", "Viver", "Zorita"), class = "factor"),
MAXIMO_HORARIO = c(99.5, 88.5, 88.5, 90, 97.5, 87.3, 96,
92.5, 88, 20, 20, 81.5, 99, 91.7, 93.5, 81.5, 90.5, 84.5,
100.3, 96.3, 41.7, 91.5, 57.3, NA, 93, 111.5, 86.8, NA, 100.3,
21.9, 80.5, 111, 98.7, 87.3, 89.7, 87.5, 41.7, 81.7, NA,
20, 84.8, 92, 88.7, NA, 74, NA, 95, 20.5, 85.7, 80, 82.3,
76, 20, 90.8, NA), PROMEDIO_DIARIO = c(NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, 21.9, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA), MAXIMO_OCTOHORARIO = c(103.9, 83.1,
80.9, 75.7, 95.1, 82.9, 90.2, 83.5, 85, NA, NA, 77.1, 76.7,
91.4, 73.1, 65.1, 96.6, 81.1, 110.5, 91.1, NA, 87.8, 54.8,
NA, 95.1, 116.8, 79.9, NA, 107.2, 73.9, 70.5, 102.8, 100.5,
77.5, 80.9, 86.9, NA, 70.5, NA, NA, 73.5, 86.9, 86, NA, 83.5,
NA, 84.5, 20.5, 90.8, 71.5, 67.5, 64.5, NA, 91.4, NA), VARIACION_MAX_HOR = c(-25.2,
-6.5, -6.7, -1.2, -13.2, -15.4, -12.7, -29.5, -16.3, NA,
NA, -32.5, -11.5, -22.3, -19.5, -22.3, -25.3, -24.7, -14.7,
-18, NA, -12.8, -36, NA, -27.3, -11.4, -15.7, NA, -21.4,
-103.6, -26, -24.5, -33.1, -30, -31, -17.8, NA, -15.1, NA,
NA, -23.5, -32.5, -16.1, NA, -32.3, NA, -28.2, 0.3, -30.5,
-17.3, -18.4, -19.7, NA, -31.2, NA), VARIACION_PRM_DIA = c(NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 0, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA), OSCILACION_DIARIO = c(16.5,
63.7, 53.3, 62, 26.8, 31.3, 29.2, 15, 52, 20, 20, 51.8, 85.7,
27.5, 80, 74.8, 45, 48.3, 12.5, 21.6, 41.7, 41.8, 35.3, NA,
26.5, 27.1, 64.2, NA, 58.6, 3.9, 39.2, 39.3, 32.9, 22.6,
43.4, 17.3, 41.7, 46.9, NA, 20, 50.8, 58.2, 64.5, NA, 2.7,
NA, 40.2, 1.5, 25.9, 30.5, 58.6, 31, 20, 15.8, NA), ESTACIONALIDAD_MAX = c(-38.2,
-39.6, -36.8, -38.8, -37.6, -51.8, -35.6, -40.3, -42.9, -86.5,
-83.6, -50.6, -35, -46.8, -45, -57.1, -31.4, -49.7, -35.5,
-45.7, -75.2, -44.1, -62.6, NA, -48.4, -10.8, -39.3, NA,
-38.1, -86.4, -53.7, -16.5, -42.3, -42.2, -38.1, -48.7, -68.2,
-45.4, NA, -87.6, -43.8, -44.2, -43.1, NA, -55.5, NA, -33.1,
-86.1, -38.3, -44.4, -41.6, -38.2, -85.5, -50.1, NA), ESTACIONALIDAD_MAX.1 = c(NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, -71.11,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)), .Names = c("PROVINCIA",
"ESTACION", "MAXIMO_HORARIO", "PROMEDIO_DIARIO", "MAXIMO_OCTOHORARIO",
"VARIACION_MAX_HOR", "VARIACION_PRM_DIA", "OSCILACION_DIARIO",
"ESTACIONALIDAD_MAX", "ESTACIONALIDAD_MAX.1"), class = "data.frame", row.names = c(NA,
-55L))
**
Sounds like you want facet_wrap rather than facet_grid. Try
ggplot(datos, aes(ESTACION,MAXIMO_HORARIO, fill = factor(MAXIMO_HORARIO))) +
geom_bar(stat="identity") +
theme(axis.text.x = element_text(angle=90, size=10)) +
facet_wrap(~PROVINCIA , scales="free", ncol=1)
to get
facet_grid() is not designed for what you want. Making the three plots separately is the right approach. But with the gridExtra package it is easy to combine these plot elements (the gridExtra package calls them "grobs") into a single plot or single file.
require(ggplot2)
require(gridExtra)
#toy data
dat <- data.frame(x=1:20, y=sample(1:20, size=20, replace=T), group=sample(1:3, size=20, replace=T))
#making each "grob"
p1 <- ggplot(subset(dat, group==1), aes(factor(x), y)) +
geom_bar(stat='identity')
p2 <- ggplot(subset(dat, group==2), aes(factor(x), y)) +
geom_bar(stat='identity')
p3 <- ggplot(subset(dat, group==3), aes(factor(x), y)) +
geom_bar(stat='identity')
#combine them into a single stack of plots
pAll <- grid.arrange(p1, p2, p3, ncol=1)
pAll
Note for this approach to work, your x-variable in the parent data.frame will have to be a string or a numeric, not a factor. (For numerics, you have to make it a factor after subsetting: that's the only way ggplot2 will know that you don't want to show the gaps where each subset has no data. For strings, this won't be a problem and the x-axis doesn't need to be a factor at any point.)

Resources