Home > database >  Row_wise and column_wise fill NA's using fill and down/across
Row_wise and column_wise fill NA's using fill and down/across

Time:05-20

I have the following data and I am trying to "clean" it. I want to do 3 things:

    1. Fill the NA's in column ...2 to have something like:

    Andalucía Almería

    Andalucía Cadiz

    Andalucía Cordoba

    Andalucía Granada

    Andalucía Huelva

    ...

    Aragón Huesca

    Aragón Teruel

    Aragón Zaragoza

    Asturias Asturias ...

  • So, group_by and fill downwards.

    1. Do the exact same but row_wise()
    1. Once the NA's are filled paste the two rows together (and also the two columns together) such as:

Andalucía_Almería

Andalucía_Cadiz

Andalucía_Cordoba

Andalucía_Granada

etc.

So, the observations are compressed into a single column and a single row.

Data

df <- structure(list(...2 = c(NA, NA, "España", "Andalucía", NA, 
NA, NA, NA, NA, NA, NA, "Aragón", NA, NA, "Asturias", "Baleares (Islas)", 
"Canarias", NA, "Cantabria", "Castilla y León", NA, NA, NA, 
NA, NA, NA, NA, NA, "Castilla La Mancha", NA, NA, NA, NA, "Cataluña", 
NA, NA, NA, "Comunidad Valenciana", NA, NA, "Extremadura", NA, 
"Galicia", NA, NA, NA, "Madrid (Comunidad de)", "Murcia (Región de)", 
"Navarra (Comunidad Foral de)", "País Vasco", NA, NA, "Rioja (La)", 
"Ceuta y Melilla", NA), ...3 = c(NA, NA, NA, "Almería", "Cádiz", 
"Córdoba", "Granada", "Huelva", "Jaén", "Málaga", "Sevilla", 
"Huesca", "Teruel", "Zaragoza", "Asturias", "Baleares", "Palmas_(Las)", 
"Tenerife", "Cantabria", "Avila", "Burgos", "León", "Palencia", 
"Salamanca", "Segovia", "Soria", "Valladolid", "Zamora", "Albacete", 
"Ciudad_Real", "Cuenca", "Guadalajara", "Toledo", "Barcelona", 
"Girona", "Lleida", "Tarragona", "Alicante", "Castellón", "Valencia", 
"Badajoz", "Cáceres", "Coruña", "Lugo", "Ourense", "Pontevedra", 
"Madrid", "Murcia", "Navarra", "Alava", "Guipúzcoa", "Vizcaya", 
"Rioja_(La)", "Ceuta", "Melilla"), ...4 = c("España", NA, "222295", 
"5200", "6331", "3285", "4750", "3039", "2969", "9914", "9450", 
"1622", "658", "4127", "5046", "5262", "5248", "4614", "3360", 
"1178", "2434", "2540", "808", "1710", "721", "502", "2470", 
"789", "1818", "2688", "845", "1581", "4014", "21587", "4643", 
"2455", "5364", "13776", "4539", "13802", "2607", "1821", "4383", 
"1172", "977", "2759", "22573", "8500", "2420", "1486", "2004", 
"3969", "1840", "249", "396"), ...5 = c("Andalucía", "Almería", 
"4432", "4303", "2", "2", "49", "0", "5", "9", "4", "0", "0", 
"0", "1", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "1", 
"0", "0", "3", "0", "0", "0", "0", "0", "1", "0", "1", "7", "1", 
"2", "1", "1", "1", "0", "0", "0", "10", "27", "0", "0", "0", 
"0", "0", "0", "1"), ...6 = c(NA, "Cádiz", "5622", "4", "5357", 
"4", "14", "6", "3", "86", "82", "1", "0", "0", "2", "4", "2", 
"1", "2", "0", "3", "1", "0", "3", "0", "0", "1", "0", "0", "4", 
"0", "0", "0", "3", "0", "0", "1", "2", "1", "2", "1", "0", "2", 
"0", "3", "1", "13", "9", "0", "1", "0", "0", "1", "2", "0"), 
    ...7 = c(NA, "Córdoba", "3463", "20", "25", "3019", "24", 
    "20", "17", "270", "18", "0", "0", "0", "1", "2", "2", "1", 
    "0", "0", "0", "0", "1", "0", "0", "0", "0", "0", "1", "5", 
    "0", "1", "5", "1", "0", "0", "1", "4", "0", "1", "8", "0", 
    "1", "0", "0", "0", "14", "1", "0", "0", "0", "0", "0", "0", 
    "0"), ...8 = c(NA, "Granada", "4394", "118", "6", "6", "4067", 
    "3", "28", "100", "8", "0", "0", "1", "0", "2", "1", "0", 
    "0", "0", "1", "1", "1", "1", "0", "0", "0", "0", "0", "7", 
    "0", "0", "2", "3", "5", "0", "1", "5", "4", "0", "0", "0", 
    "2", "0", "0", "0", "7", "14", "0", "0", "0", "0", "0", "0", 
    "0"), ...9 = c(NA, "Huelva", "2609", "0", "11", "0", "1", 
    "2502", "1", "6", "56", "0", "0", "0", "0", "0", "1", "0", 
    "0", "1", "0", "0", "1", "0", "0", "0", "0", "0", "0", "2", 
    "0", "0", "0", "0", "0", "0", "0", "1", "0", "1", "15", "0", 
    "0", "1", "0", "1", "3", "1", "2", "0", "0", "1", "0", "0", 
    "1"), ...10 = c(NA, "Jaén", "3028", "123", "11", "18", "74", 
    "0", "2642", "83", "14", "0", "0", "0", "0", "1", "1", "0", 
    "1", "0", "0", "0", "0", "1", "0", "0", "0", "0", "0", "6", 
    "0", "0", "1", "1", "3", "0", "0", "11", "6", "5", "0", "0", 
    "2", "0", "0", "0", "16", "6", "1", "0", "0", "0", "0", "1", 
    "0"), ...11 = c(NA, "Málaga", "8862", "24", "77", "36", 
    "100", "7", "21", "8405", "42", "0", "0", "0", "6", "4", 
    "4", "8", "3", "2", "3", "1", "0", "2", "0", "0", "0", "0", 
    "3", "3", "0", "2", "4", "3", "1", "1", "0", "35", "2", "3", 
    "8", "2", "3", "4", "0", "0", "25", "11", "0", "0", "0", 
    "1", "0", "1", "5"), ...12 = c(NA, "Sevilla", "10210", "25", 
    "447", "34", "32", "316", "14", "197", "8975", "0", "0", 
    "2", "3", "0", "6", "1", "3", "4", "2", "3", "0", "3", "3", 
    "1", "2", "3", "0", "9", "0", "2", "1", "2", "0", "1", "1", 
    "7", "5", "5", "52", "5", "1", "0", "1", "6", "25", "5", 
    "0", "1", "2", "1", "2", "0", "0"), ...13 = c("Aragón", 
    "Huesca", "991", "1", "1", "1", "2", "0", "0", "1", "0", 
    "897", "1", "34", "1", "0", "0", "1", "0", "0", "1", "0", 
    "0", "0", "0", "1", "0", "0", "0", "1", "0", "0", "0", "6", 
    "0", "6", "15", "0", "9", "2", "1", "0", "0", "0", "0", "0", 
    "4", "1", "1", "0", "0", "0", "3", "0", "0"), ...14 = c(NA, 
    "Teruel", "524", "1", "0", "0", "3", "0", "0", "0", "0", 
    "5", "417", "27", "0", "0", "0", "1", "0", "0", "0", "0", 
    "0", "0", "0", "0", "0", "0", "0", "1", "0", "0", "0", "3", 
    "1", "2", "2", "1", "20", "37", "0", "0", "0", "0", "0", 
    "0", "3", "0", "0", "0", "0", "0", "0", "0", "0"), ...15 = c(NA, 
    "Zaragoza", "4652", "4", "4", "0", "3", "2", "4", "12", "1", 
    "264", "38", "3859", "5", "4", "2", "5", "10", "2", "3", 
    "0", "1", "5", "2", "30", "0", "1", "3", "1", "0", "2", "0", 
    "6", "6", "10", "100", "34", "134", "20", "0", "2", "3", 
    "2", "2", "1", "30", "1", "22", "1", "1", "0", "10", "0", 
    "0"), ...16 = c("Asturias", NA, "4709", "1", "0", "3", "2", 
    "0", "0", "5", "2", "1", "0", "1", "4446", "4", "2", "8", 
    "12", "3", "2", "87", "2", "7", "1", "0", "4", "6", "0", 
    "1", "1", "1", "3", "0", "2", "2", "0", "15", "0", "1", "1", 
    "2", "7", "28", "3", "6", "31", "3", "1", "1", "0", "1", 
    "0", "0", "0"), ...17 = c("Baleares", "Baleares", "5047", 
    "9", "8", "8", "25", "0", "8", "5", "7", "2", "1", "2", "21", 
    "4776", "26", "10", "2", "0", "3", "4", "4", "2", "0", "0", 
    "3", "3", "4", "7", "1", "0", "3", "23", "0", "1", "2", "8", 
    "3", "7", "4", "1", "11", "4", "2", "5", "13", "13", "0", 
    "0", "1", "1", "3", "0", "1"), ...18 = c("Canarias", "Palmas (Las)", 
    "5047", "0", "9", "3", "3", "2", "3", "5", "2", "0", "0", 
    "2", "3", "3", "4883", "44", "4", "1", "0", "1", "0", "2", 
    "0", "0", "13", "0", "0", "0", "0", "3", "1", "5", "0", "0", 
    "2", "1", "0", "3", "2", "2", "9", "0", "1", "5", "21", "3", 
    "0", "0", "0", "0", "1", "0", "5"), ...19 = c(NA, "Tenerife", 
    "4585", "4", "0", "3", "3", "1", "1", "4", "1", "0", "0", 
    "1", "5", "3", "112", "4408", "2", "1", "0", "2", "1", "0", 
    "0", "1", "0", "0", "0", "0", "0", "0", "1", "2", "0", "1", 
    "0", "6", "2", "0", "1", "1", "0", "0", "2", "3", "9", "1", 
    "0", "0", "1", "1", "0", "0", "1"), ...20 = c("Cantabria", 
    "Cantabria", "2742", "4", "2", "0", "3", "0", "1", "5", "5", 
    "1", "0", "1", "31", "3", "6", "2", "2571", "0", "19", "2", 
    "15", "1", "0", "0", "2", "1", "0", "3", "0", "1", "2", "2", 
    "0", "0", "1", "5", "3", "4", "1", "1", "2", "0", "0", "0", 
    "18", "3", "1", "0", "0", "18", "2", "0", "0"), ...21 = c("Castilla y León", 
    "Avila", "748", "0", "1", "0", "0", "0", "0", "3", "0", "0", 
    "0", "0", "5", "1", "0", "0", "2", "665", "2", "0", "0", 
    "13", "1", "0", "1", "0", "0", "0", "0", "0", "3", "0", "0", 
    "0", "0", "10", "0", "1", "2", "4", "2", "0", "0", "0", "31", 
    "1", "0", "0", "0", "0", "0", "0", "0"), ...22 = c(NA, "Burgos", 
    "2237", "2", "7", "0", "0", "0", "1", "6", "1", "4", "0", 
    "1", "20", "18", "3", "1", "44", "3", "2020", "2", "11", 
    "2", "1", "5", "6", "0", "0", "1", "0", "0", "1", "0", "0", 
    "0", "1", "18", "9", "6", "0", "0", "2", "2", "1", "0", "15", 
    "3", "2", "9", "1", "4", "4", "0", "0"), ...23 = c(NA, "León", 
    "2389", "1", "3", "0", "2", "0", "0", "8", "1", "0", "0", 
    "1", "29", "1", "4", "3", "2", "1", "1", "2211", "1", "8", 
    "1", "0", "4", "6", "0", "1", "0", "0", "1", "3", "0", "0", 
    "1", "38", "1", "2", "1", "0", "9", "9", "3", "9", "20", 
    "2", "0", "0", "0", "1", "0", "0", "0"), ...24 = c(NA, "Palencia", 
    "745", "0", "0", "0", "0", "1", "0", "4", "0", "0", "0", 
    "0", "5", "0", "1", "0", "33", "0", "3", "0", "661", "1", 
    "0", "0", "8", "0", "0", "1", "0", "3", "0", "0", "1", "0", 
    "0", "3", "1", "4", "0", "1", "4", "0", "0", "0", "8", "1", 
    "0", "0", "0", "1", "0", "0", "0"), ...25 = c(NA, "Salamanca", 
    "1530", "1", "6", "0", "1", "1", "0", "7", "2", "0", "0", 
    "1", "8", "0", "6", "3", "6", "9", "3", "1", "1", "1415", 
    "1", "2", "9", "4", "0", "0", "0", "0", "3", "0", "0", "0", 
    "0", "5", "1", "0", "1", "4", "2", "1", "0", "2", "15", "7", 
    "0", "0", "0", "0", "1", "1", "0"), ...26 = c(NA, "Segovia", 
    "526", "1", "1", "0", "0", "0", "0", "0", "1", "0", "0", 
    "0", "1", "0", "1", "0", "2", "4", "5", "0", "0", "0", "438", 
    "4", "17", "1", "0", "2", "0", "0", "1", "1", "0", "0", "0", 
    "8", "4", "2", "0", "2", "2", "0", "0", "0", "25", "2", "0", 
    "0", "0", "1", "0", "0", "0"), ...27 = c(NA, "Soria", "381", 
    "0", "0", "1", "0", "0", "0", "0", "0", "0", "2", "8", "0", 
    "0", "0", "0", "0", "0", "1", "1", "0", "0", "1", "346", 
    "0", "0", "0", "0", "0", "0", "0", "1", "0", "1", "0", "3", 
    "2", "3", "1", "0", "1", "0", "0", "0", "6", "0", "0", "0", 
    "0", "0", "3", "0", "0"), ...28 = c(NA, "Valladolid", "2549", 
    "2", "3", "0", "2", "4", "0", "5", "2", "3", "0", "0", "11", 
    "0", "2", "8", "40", "7", "15", "19", "27", "5", "5", "0", 
    "2254", "22", "0", "3", "0", "0", "2", "0", "0", "1", "1", 
    "29", "4", "2", "0", "1", "25", "3", "2", "2", "27", "6", 
    "2", "1", "1", "0", "1", "0", "0"), ...29 = c(NA, "Zamora", 
    "714", "2", "0", "0", "0", "0", "0", "2", "1", "0", "0", 
    "0", "6", "0", "0", "0", "2", "0", "0", "4", "2", "17", "0", 
    "0", "12", "636", "0", "1", "0", "0", "0", "0", "0", "0", 
    "0", "7", "0", "1", "1", "2", "1", "2", "0", "6", "9", "0", 
    "0", "0", "0", "0", "0", "0", "0"), ...30 = c("Castilla La Mancha", 
    "Albacete", "1763", "3", "1", "0", "6", "0", "1", "0", "1", 
    "0", "0", "1", "0", "1", "1", "1", "0", "0", "0", "0", "0", 
    "1", "0", "1", "1", "0", "1602", "3", "10", "1", "3", "0", 
    "0", "1", "0", "70", "9", "6", "1", "0", "0", "0", "0", "0", 
    "9", "28", "1", "0", "0", "0", "0", "0", "0"), ...31 = c(NA, 
    "Ciudad_Real", "2357", "6", "3", "4", "7", "1", "2", "17", 
    "0", "0", "0", "0", "2", "0", "0", "0", "0", "1", "1", "3", 
    "1", "1", "1", "0", "1", "0", "4", "2191", "3", "1", "12", 
    "0", "0", "0", "0", "33", "1", "2", "5", "1", "0", "2", "2", 
    "0", "40", "7", "0", "0", "0", "0", "1", "0", "1"), ...32 = c(NA, 
    "Cuenca", "737", "0", "0", "0", "0", "1", "0", "0", "1", 
    "0", "0", "0", "2", "0", "0", "0", "0", "0", "0", "0", "0", 
    "1", "0", "0", "0", "0", "28", "15", "607", "13", "9", "0", 
    "0", "0", "0", "13", "9", "11", "0", "0", "1", "0", "0", 
    "0", "22", "3", "0", "0", "0", "0", "1", "0", "0"), ...33 = c(NA, 
    "Guadalajara", "1098", "13", "4", "1", "1", "1", "2", "4", 
    "0", "0", "1", "1", "3", "0", "2", "4", "0", "2", "0", "0", 
    "0", "2", "2", "2", "0", "0", "1", "3", "1", "936", "1", 
    "3", "1", "0", "0", "23", "8", "10", "1", "3", "1", "2", 
    "0", "0", "57", "1", "0", "0", "0", "0", "1", "0", "0"), 
    ...34 = c(NA, "Toledo", "2802", "7", "3", "4", "5", "0", 
    "2", "11", "1", "0", "0", "2", "11", "3", "1", "0", "2", 
    "10", "0", "1", "0", "1", "1", "0", "0", "1", "0", "43", 
    "7", "1", "2412", "1", "0", "0", "1", "80", "16", "14", "12", 
    "18", "2", "0", "0", "0", "118", "10", "1", "0", "0", "0", 
    "0", "0", "0"), ...35 = c("Cataluña", "Barcelona", "25887", 
    "109", "38", "63", "94", "24", "69", "62", "70", "106", "66", 
    "69", "27", "200", "32", "24", "15", "10", "20", "36", "10", 
    "12", "8", "22", "9", "13", "18", "48", "17", "14", "9", 
    "21178", "1125", "374", "1204", "69", "145", "93", "68", 
    "18", "17", "43", "24", "17", "78", "91", "7", "2", "2", 
    "6", "12", "0", "0"), ...36 = c(NA, "Girona", "3659", "2", 
    "2", "4", "2", "1", "6", "7", "0", "5", "2", "5", "1", "5", 
    "7", "1", "2", "0", "0", "1", "0", "4", "0", "3", "2", "0", 
    "0", "1", "4", "2", "0", "91", "3435", "9", "15", "5", "3", 
    "3", "5", "6", "1", "1", "2", "2", "2", "7", "1", "0", "0", 
    "0", "1", "0", "1"), ...37 = c(NA, "Lleida", "2142", "0", 
    "2", "1", "1", "1", "2", "2", "0", "24", "1", "3", "0", "2", 
    "0", "1", "0", "1", "0", "0", "0", "0", "0", "1", "0", "0", 
    "0", "0", "0", "1", "0", "46", "7", "1951", "69", "2", "3", 
    "3", "2", "0", "4", "1", "1", "6", "1", "2", "0", "0", "0", 
    "0", "1", "0", "0"), ...38 = c(NA, "Tarragona", "4154", "3", 
    "3", "7", "7", "0", "9", "2", "2", "20", "10", "12", "7", 
    "3", "3", "6", "5", "1", "0", "1", "1", "1", "0", "1", "0", 
    "0", "1", "4", "2", "0", "6", "58", "34", "37", "3845", "3", 
    "26", "5", "5", "2", "6", "0", "2", "2", "3", "4", "2", "0", 
    "0", "0", "3", "0", "0"), ...39 = c("Comunidad Valenciana", 
    "Alicante", "11850", "22", "2", "6", "34", "0", "15", "10", 
    "3", "2", "2", "3", "11", "7", "3", "1", "3", "2", "3", "5", 
    "0", "1", "1", "1", "1", "2", "34", "16", "5", "2", "6", 
    "3", "0", "1", "2", "11337", "10", "53", "5", "1", "14", 
    "1", "1", "1", "26", "188", "1", "0", "0", "2", "1", "0", 
    "0"), ...40 = c(NA, "Castellón", "3462", "2", "0", "1", 
    "3", "0", "2", "0", "1", "2", "7", "1", "0", "6", "0", "2", 
    "0", "1", "2", "0", "0", "0", "0", "1", "0", "0", "4", "1", 
    "2", "0", "1", "3", "3", "6", "16", "2", "3346", "40", "2", 
    "0", "0", "0", "0", "0", "1", "3", "0", "0", "0", "0", "0", 
    "0", "1"), ...41 = c(NA, "Valencia", "14330", "21", "8", 
    "6", "6", "1", "18", "8", "4", "12", "106", "4", "8", "47", 
    "4", "2", "4", "2", "0", "1", "1", "2", "1", "0", "1", "0", 
    "59", "16", "42", "3", "7", "7", "1", "10", "3", "396", "356", 
    "13080", "4", "2", "9", "0", "1", "1", "36", "25", "0", "1", 
    "1", "1", "1", "1", "0"), ...42 = c("Extremadura", "Badajoz", 
    "2415", "1", "13", "4", "2", "50", "3", "26", "16", "0", 
    "0", "1", "2", "0", "3", "0", "0", "0", "0", "0", "0", "4", 
    "1", "0", "0", "1", "0", "6", "0", "0", "3", "1", "0", "0", 
    "2", "3", "1", "2", "2213", "35", "3", "0", "0", "0", "16", 
    "0", "1", "0", "1", "1", "0", "0", "0"), ...43 = c(NA, "Cáceres", 
    "1669", "0", "4", "2", "1", "13", "2", "11", "4", "0", "0", 
    "1", "1", "2", "1", "0", "1", "1", "0", "1", "0", "23", "0", 
    "0", "1", "10", "0", "4", "0", "0", "8", "0", "0", "0", "0", 
    "3", "2", "2", "36", "1502", "2", "0", "1", "1", "21", "6", 
    "0", "0", "0", "2", "0", "0", "0"), ...44 = c("Galicia", 
    "Coruña", "3997", "3", "3", "0", "2", "0", "1", "2", "2", 
    "1", "0", "0", "14", "5", "13", "8", "1", "2", "0", "6", 
    "0", "0", "0", "1", "0", "1", "0", "0", "0", "0", "3", "4", 
    "0", "0", "1", "16", "3", "0", "0", "0", "3764", "39", "13", 
    "59", "17", "9", "0", "0", "0", "0", "3", "0", "1"), ...45 = c(NA, 
    "Lugo", "1021", "0", "0", "0", "0", "0", "0", "1", "0", "0", 
    "0", "0", "3", "0", "0", "0", "1", "0", "0", "1", "1", "0", 
    "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", 
    "1", "1", "0", "0", "0", "0", "55", "920", "3", "23", "3", 
    "7", "0", "0", "1", "0", "0", "0", "0"), ...46 = c(NA, "Ourense", 
    "968", "0", "0", "0", "0", "0", "0", "2", "0", "0", "0", 
    "0", "0", "0", "1", "0", "0", "0", "0", "6", "0", "0", "0", 
    "0", "0", "3", "0", "0", "0", "1", "0", "1", "1", "0", "2", 
    "2", "1", "0", "0", "0", "36", "5", "843", "56", "8", "0", 
    "0", "0", "0", "0", "0", "0", "0"), ...47 = c(NA, "Pontevedra", 
    "2612", "3", "0", "0", "2", "1", "1", "2", "2", "0", "0", 
    "1", "3", "3", "20", "8", "1", "0", "0", "0", "1", "2", "0", 
    "0", "0", "2", "0", "0", "0", "0", "0", "1", "0", "0", "0", 
    "10", "2", "1", "0", "0", "70", "3", "30", "2431", "9", "1", 
    "0", "0", "0", "2", "0", "0", "0"), ...48 = c("Madrid", NA, 
    "30307", "263", "200", "40", "117", "63", "68", "395", "106", 
    "59", "3", "50", "266", "134", "61", "32", "178", "435", 
    "60", "102", "27", "108", "247", "65", "97", "49", "27", 
    "268", "142", "584", "1484", "98", "13", "16", "39", "1056", 
    "291", "337", "130", "184", "222", "78", "21", "87", "21606", 
    "300", "52", "3", "9", "16", "17", "1", "1"), ...49 = c("Murcia", 
    "Murcia", "8096", "66", "4", "0", "18", "0", "8", "12", "1", 
    "2", "0", "1", "4", "3", "1", "0", "1", "1", "0", "0", "0", 
    "2", "0", "0", "1", "0", "25", "3", "0", "2", "4", "5", "0", 
    "2", "0", "226", "1", "8", "0", "0", "2", "2", "0", "3", 
    "19", "7668", "1", "0", "0", "0", "0", "0", "0"), ...50 = c("Navarra", 
    "Navarra", "2531", "3", "6", "1", "1", "4", "3", "19", "0", 
    "45", "0", "18", "10", "5", "0", "5", "10", "0", "5", "1", 
    "2", "4", "0", "2", "1", "0", "0", "4", "1", "0", "3", "6", 
    "0", "2", "17", "25", "26", "2", "3", "1", "7", "1", "1", 
    "1", "14", "5", "2229", "1", "7", "3", "27", "0", "0"), ...51 = c("País Vasco", 
    "Alava", "1721", "1", "6", "0", "2", "0", "0", "7", "0", 
    "4", "1", "1", "4", "0", "6", "3", "28", "1", "33", "10", 
    "3", "6", "0", "0", "2", "5", "0", "0", "0", "0", "1", "2", 
    "0", "1", "3", "24", "11", "2", "1", "5", "7", "2", "2", 
    "3", "9", "1", "9", "1426", "12", "14", "63", "0", "0"), 
    ...52 = c(NA, "Guipúzcoa", "2570", "2", "10", "0", "4", 
    "2", "2", "7", "3", "127", "0", "3", "8", "2", "11", "2", 
    "20", "2", "12", "11", "14", "25", "2", "7", "7", "3", "0", 
    "2", "0", "1", "0", "2", "0", "10", "6", "36", "20", "3", 
    "7", "2", "35", "5", "4", "6", "14", "3", "62", "5", "1942", 
    "17", "102", "0", "0"), ...53 = c(NA, "Vizcaya", "5097", 
    "14", "17", "1", "14", "8", "4", "41", "4", "31", "0", "4", 
    "45", "5", "11", "7", "328", "2", "204", "13", "18", "22", 
    "2", "4", "6", "16", "1", "0", "0", "4", "4", "10", "3", 
    "9", "3", "60", "27", "9", "4", "9", "28", "11", "6", "13", 
    "32", "9", "9", "14", "21", "3873", "117", "0", "0"), ...54 = c("Rioja (La)", 
    "Rioja (La)", "1591", "1", "4", "0", "1", "1", "0", "1", 
    "1", "4", "0", "5", "3", "3", "1", "1", "19", "0", "7", "1", 
    "0", "0", "0", "0", "3", "0", "0", "0", "0", "0", "0", "2", 
    "0", "0", "5", "18", "5", "1", "0", "1", "3", "0", "0", "0", 
    "8", "0", "12", "20", "1", "1", "1458", "0", "0"), ...55 = c("Ceuta y Melilla", 
    "Ceuta", "292", "0", "17", "2", "5", "2", "0", "11", "3", 
    "0", "0", "0", "1", "0", "0", "1", "0", "0", "0", "0", "0", 
    "0", "0", "0", "0", "0", "0", "0", "0", "0", "1", "0", "0", 
    "0", "0", "0", "2", "0", "2", "0", "0", "0", "0", "0", "3", 
    "0", "0", "0", "0", "0", "0", "242", "0"), ...56 = c(NA, 
    "Melilla", "431", "5", "0", "0", "5", "0", "0", "26", "0", 
    "0", "0", "0", "0", "0", "1", "0", "0", "1", "0", "0", "0", 
    "0", "1", "0", "1", "0", "0", "1", "0", "0", "3", "0", "0", 
    "0", "0", "0", "3", "1", "0", "0", "2", "0", "0", "0", "3", 
    "1", "0", "0", "0", "0", "0", "0", "377"), ...57 = c(NA, 
    NA, 183, 0, 0, 0, 11, 0, 0, 0, 3, 0, 1, 0, 0, 1, 0, 0, 0, 
    0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 2, 27, 0, 0, 0, 0, 0, 0, 
    0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 134)), row.names = c(NA, 
-55L), class = c("tbl_df", "tbl", "data.frame"))

Edit:

Expected output:

Would be to have a data frame/matrix where the rownames are the items on the left and the column names are the items across the top.

The data looks like:

# A tibble: 55 × 56
   ...2   ...3  ...4  ...5  ...6  ...7  ...8  ...9  ...10 ...11 ...12 ...13 ...14 ...15 ...16 ...17 ...18 ...19 ...20 ...21 ...22 ...23 ...24 ...25 ...26 ...27 ...28 ...29 ...30 ...31
   <chr>  <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
 1 NA     NA    Espa… Anda… NA    NA    NA    NA    NA    NA    NA    Arag… NA    NA    Astu… Bale… Cana… NA    Cant… Cast… NA    NA    NA    NA    NA    NA    NA    NA    Cast… NA   
 2 NA     NA    NA    Alme… Cádiz Córd… Gran… Huel… Jaén  Mála… Sevi… Hues… Teru… Zara… NA    Bale… Palm… Tene… Cant… Avila Burg… León  Pale… Sala… Sego… Soria Vall… Zamo… Alba… Ciud…
 3 España NA    2222… 4432  5622  3463  4394  2609  3028  8862  10210 991   524   4652  4709  5047  5047  4585  2742  748   2237  2389  745   1530  526   381   2549  714   1763  2357 
 4 Andal… Alme… 5200  4303  4     20    118   0     123   24    25    1     1     4     1     9     0     4     4     0     2     1     0     1     1     0     2     2     3     6    
 5 NA     Cádiz 6331  2     5357  25    6     11    11    77    447   1     0     4     0     8     9     0     2     1     7     3     0     6     1     0     3     0     1     3    
 6 NA     Córd… 3285  2     4     3019  6     0     18    36    34    1     0     0     3     8     3     3     0     0     0     0     0     0     0     1     0     0     0     4    
 7 NA     Gran… 4750  49    14    24    4067  1     74    100   32    2     3     3     2     25    3     3     3     0     0     2     0     1     0     0     2     0     6     7    
 8 NA     Huel… 3039  0     6     20    3     2502  0     7     316   0     0     2     0     0     2     1     0     0     0     0     1     1     0     0     4     0     0     1    
 9 NA     Jaén  2969  5     3     17    28    1     2642  21    14    0     0     4     0     8     3     1     1     0     1     0     0     0     0     0     0     0     1     2    
10 NA     Mála… 9914  9     86    270   100   6     83    8405  197   1     0     12    5     5     5     4     5     3     6     8     4     7     0     0     5     2     0     17   

CodePudding user response:

This was what I was hoping for:

out <- df %>% 
  fill(`...2`, .direction = c("down")) %>% 
  unite(col = "CCAA", c(1, 2)) %>% 
  mutate(
    "CCAA" = gsub("NA_NA|_NA|NA", "", CCAA)
  ) %>% 
  t() %>% 
  as.data.frame() %>% 
  fill(V1, .direction = "down") %>% 
  unite(col = "CCAA", c(1, 2)) %>% 
  mutate(
    "CCAA" = gsub("NA_NA|_NA|NA", "", CCAA)
  ) %>% 
  t() %>% 
  as.data.frame() %>% 
  janitor::row_to_names(1) %>% 
  rename(CCAA = c(1)) %>% 
  remove_rownames() %>% 
  column_to_rownames("CCAA") %>% 
  tibble()

Which gives:

# A tibble: 53 × 54
   España Andalucía_Almería Andalucía_Cádiz Andalucía_Córdoba Andalucía_Granada Andalucía_Huelva Andalucía_Jaén Andalucía_Málaga Andalucía_Sevilla Aragón_Huesca Aragón_Teruel
   <fct>  <fct>             <fct>           <fct>             <fct>             <fct>            <fct>          <fct>            <fct>             <fct>         <fct>        
 1 222295 4432              5622            3463              4394              2609             3028           8862             10210             991           524          
 2 5200   4303              4               20                118               0                123            24               25                1             1            
 3 6331   2                 5357            25                6                 11               11             77               447               1             0            
 4 3285   2                 4               3019              6                 0                18             36               34                1             0            
 5 4750   49                14              24                4067              1                74             100              32                2             3            
 6 3039   0                 6               20                3                 2502             0              7                316               0             0            
 7 2969   5                 3               17                28                1                2642           21               14                0             0            
 8 9914   9                 86              270               100               6                83             8405             197               1             0            
 9 9450   4                 82              18                8                 56               14             42               8975              0             0            
10 1622   0                 1               0                 0                 0                0              0                0                 897           5 

CodePudding user response:

This may be done in a more compact way - i.e make use of na.rm in unite to remove the NA, then instead of double transpose, just order the rows to return the first observation as non-NA before converting the row to column name

library(dplyr)
library(tidyr)
library(tibble)
out <- df %>% 
  fill(`...2`, .direction = c("down")) %>%   
  unite(col = "CCAA", c(1, 2), na.rm = TRUE) %>% 
  mutate(across(-CCAA, ~ .x[order(is.na(.x))])) %>% 
  janitor::row_to_names(1) %>%
  setNames(c("CCAA", .[[1]][-1])) %>%
  column_to_rownames("CCAA") %>% 
  type.convert(as.is = TRUE)

-output

> head(out)
                  España Andalucía_Almería Andalucía_Cádiz Andalucía_Córdoba Andalucía_Granada Andalucía_Huelva
                  222295           Almería            5622              3463              4394             2609
España              5200              4432               4                20               118                0
Andalucía_Almería   6331              4303            5357                25                 6               11
Andalucía_Cádiz     3285                 2               4              3019                 6                0
Andalucía_Córdoba   4750                 2              14                24              4067                1
Andalucía_Granada   3039                49               6                20                 3             2502
                  Andalucía_Jaén Andalucía_Málaga Andalucía_Sevilla Aragón_Huesca Aragón_Teruel Aragón_Zaragoza
                            3028             8862             10210        Huesca           524            4652
España                       123               24                25           991             1               4
Andalucía_Almería             11               77               447             1             0               4
Andalucía_Cádiz               18               36                34             1             0               0
Andalucía_Córdoba             74              100                32             1             3               3
Andalucía_Granada              0                7               316             2             0               2
                  Asturias_Asturias Baleares (Islas)_Baleares Canarias_Palmas_(Las) Canarias_Tenerife
                               4709                  Baleares          Palmas (Las)              4585
España                            1                      5047                  5047                 4
Andalucía_Almería                 0                         9                     0                 0
Andalucía_Cádiz                   3                         8                     9                 3
Andalucía_Córdoba                 2                         8                     3                 3
Andalucía_Granada                 0                        25                     3                 1
                  Cantabria_Cantabria Castilla y León_Avila Castilla y León_Burgos Castilla y León_León
                            Cantabria                 Avila                   2237                 2389
España                           2742                   748                      2                    1
Andalucía_Almería                   4                     0                      7                    3
Andalucía_Cádiz                     2                     1                      0                    0
Andalucía_Córdoba                   0                     0                      0                    2
Andalucía_Granada                   3                     0                      0                    0
                  Castilla y León_Palencia Castilla y León_Salamanca Castilla y León_Segovia
                                       745                      1530                     526
España                                   0                         1                       1
Andalucía_Almería                        0                         6                       1
Andalucía_Cádiz                          0                         0                       0
Andalucía_Córdoba                        0                         1                       0
Andalucía_Granada                        1                         1                       0
                  Castilla y León_Soria Castilla y León_Valladolid Castilla y León_Zamora
                                    381                       2549                    714
España                                0                          2                      2
Andalucía_Almería                     0                          3                      0
Andalucía_Cádiz                       1                          0                      0
Andalucía_Córdoba                     0                          2                      0
Andalucía_Granada                     0                          4                      0
                  Castilla La Mancha_Albacete Castilla La Mancha_Ciudad_Real Castilla La Mancha_Cuenca
                                     Albacete                           2357                       737
España                                   1763                              6                         0
Andalucía_Almería                           3                              3                         0
Andalucía_Cádiz                             1                              4                         0
Andalucía_Córdoba                           0                              7                         0
Andalucía_Granada                           6                              1                         1
                  Castilla La Mancha_Guadalajara Castilla La Mancha_Toledo Cataluña_Barcelona Cataluña_Girona
                                            1098                      2802          Barcelona            3659
España                                        13                         7              25887               2
Andalucía_Almería                              4                         3                109               2
Andalucía_Cádiz                                1                         4                 38               4
Andalucía_Córdoba                              1                         5                 63               2
Andalucía_Granada                              1                         0                 94               1
                  Cataluña_Lleida Cataluña_Tarragona Comunidad Valenciana_Alicante Comunidad Valenciana_Castellón
                             2142               4154                      Alicante                           3462
España                          0                  3                         11850                              2
Andalucía_Almería               2                  3                            22                              0
Andalucía_Cádiz                 1                  7                             2                              1
Andalucía_Córdoba               1                  7                             6                              3
Andalucía_Granada               1                  0                            34                              0
                  Comunidad Valenciana_Valencia Extremadura_Badajoz Extremadura_Cáceres Galicia_Coruña
                                          14330             Badajoz                1669         Coruña
España                                       21                2415                   0           3997
Andalucía_Almería                             8                   1                   4              3
Andalucía_Cádiz                               6                  13                   2              3
Andalucía_Córdoba                             6                   4                   1              0
Andalucía_Granada                             1                   2                  13              2
                  Galicia_Lugo Galicia_Ourense Galicia_Pontevedra Madrid (Comunidad de)_Madrid
                          1021             968               2612                        30307
España                       0               0                  3                          263
Andalucía_Almería            0               0                  0                          200
Andalucía_Cádiz              0               0                  0                           40
Andalucía_Córdoba            0               0                  2                          117
Andalucía_Granada            0               0                  1                           63
                  Murcia (Región de)_Murcia Navarra (Comunidad Foral de)_Navarra País Vasco_Alava
                                     Murcia                              Navarra            Alava
España                                 8096                                 2531             1721
Andalucía_Almería                        66                                    3                1
Andalucía_Cádiz                           4                                    6                6
Andalucía_Córdoba                         0                                    1                0
Andalucía_Granada                        18                                    1                2
                  País Vasco_Guipúzcoa País Vasco_Vizcaya Rioja (La)_Rioja_(La) Ceuta y Melilla_Ceuta
                                  2570               5097            Rioja (La)                 Ceuta
España                               2                 14                  1591                   292
Andalucía_Almería                   10                 17                     1                     0
Andalucía_Cádiz                      0                  1                     4                    17
Andalucía_Córdoba                    4                 14                     0                     2
Andalucía_Granada                    2                  8                     1                     5
                  Ceuta y Melilla_Melilla NA
                                      431  0
España                                  5  0
Andalucía_Almería                       0  0
Andalucía_Cádiz                         0 11
Andalucía_Córdoba                       5  0
Andalucía_Granada                       0  0
  • Related