Вставка аббревиатуры состояния для повторяющихся значений ключа события из той же строки в df (язык R) - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть этот набор данных в CSV-файле, который доступен для загрузки здесь . Это набор данных о стихийных бедствиях в Бразилии и некоторых показателях на уровне штатов.

В исходном наборе данных каждая строка имела отношение к одному событию, но это вызывало некоторые проблемы, поскольку каждая доблесть в столбце местоположения была строкой, которая содержала имена затронутых бразильских штатов, разделенные запятыми.

Чтобы избежать этого, я разделил эти строки, создав новые строки. Теперь каждая строка содержит информацию о воздействии события (и некоторых индикаторов состояния) конкретно в 1 состоянии, и это то, что загружено по ссылке.

Это привело к проблемам с уникальными ключами событий, расположенными в столбце disaster_keys. Поскольку с некоторыми событиями связано более одной строки, теперь некоторые из disaster_keys уже не являются уникальными.

Чтобы решить эту проблему, я пытался объединить значение столбца code (которое является сокращением состояния для данного местоположения) с disaster_key той же строки.

Я понял, что это будет примерно так:

lapply(df$disaster_key, paste, df$code[which()]) 

Так, например, строка первого исходного ключа_посети '2000-0466'. Я хочу, чтобы новый ключ был '2000-0466AL'.

Но я просто не могу понять, какое условие поставить внутри какой функции, чтобы ссылаться на одну и ту же строку данного ключа_ответы.

EDIT: noTyme попросил меня включить вывод dput (head (df, 10))

structure(list(year = c(2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 
2000L, 2000L, 2000L, 2000L), end_year = c(2000L, 2000L, 2000L, 
2000L, 2000L, 2000L, 2000L, 2000L, 2000L, 2000L), code = c("AL", 
"ES", "MG", "MG", "PE", "PE", "RJ", "RS", "RS", "RS"), disaster_type = c("Landslide", 
"Flood", "Flood", "Flood", "Landslide", "Flood", "Flood", "Flood", 
"Flood", "Extreme temperature"), total_affected = c(37612.3757779619, 
92.0022816126891, 17977.7257049815, 523.571643231768, 105387.624222038, 
10000, 14639.2456238999, 5000, 295.706952864433, 0), total_deaths = c(15.7814164103337, 
0.598014830482479, 6.677440976136, 3.40321568100649, 44.2185835896663, 
3, 5.43743408887709, 6, 1.92209519361881, 7), total_damage_000USD = c(19726.7705129171, 
0, 0, 0, 55273.2294870829, 0, 0, 0, 0, 0), insured_losses_000USD = c(0, 
0, 0, 0, 0, 0, 0, 0, 0, 0), magnitude_scale = c(NA, "Km2", "Km2", 
"Km2", NA, "Km2", "Km2", "Km2", "Km2", "øC"), magnitude_value = c(NA, 
578300L, 350000L, 578300L, NA, 3000L, 350000L, 10250L, 578300L, 
-5L), population = c(2897.881, 3194.255, 18178.042, 18178.042, 
8119.689, 8119.689, 14802.363, 10266.739, 10266.739, 10266.739
), unemployment = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), sewerage_system_coverage = c(NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_), percentage_of_woman_30_to_54 = c(NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_), gdp_cap = c(6.31, 16.47, 13.96, 13.96, 8.11, 
8.11, 21.36, 19.09, 19.09, 19.09), poor_sanitation_deaths_per_100thousand = c(NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_), basic_water_access = c(NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_), garbage_collection_access = c(NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_), sewerage_or_tank_access = c(NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_
), max_2_per_dorm_percent = c(NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), 
    location = c("Alagoas", "Espirito Santo", "Minas Gerais", 
    "Minas Gerais", "Pernambuco", "Pernambuco", "Rio de Janeiro", 
    "Rio Grande do Sul", "Rio Grande do Sul", "Rio Grande do Sul"
    ), day = c("30", "17", "01", "17", "30", "16", "01", "12", 
    "17", NA), month = c("07", "12", "01", "12", "07", "09", 
    "01", "10", "12", "07"), end_day = c("17", "26", "06", "26", 
    "17", "18", "06", "15", "26", NA), end_month = c("08", "12", 
    "01", "12", "08", "09", "01", "10", "12", "07"), disaster_name = c(NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_, NA_character_, NA_character_, NA_character_, 
    NA_character_), disaster_key = c("2000-0466", "2000-0809", 
    "2000-0019", "2000-0809", "2000-0466", "2000-0590", "2000-0019", 
    "2000-0666", "2000-0809", "2000-0456"), gdp_anual_growth = c(1.9439823983, 
    8.9587315681, 5.1114478946, 5.1114478946, 4.3287522279, 4.3287522279, 
    2.5746961428, 4.3087215203, 4.3087215203, 4.3087215203), 
    GDP_deflator_index = c(NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_
    ), gdp = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), ipca_index = c(NA_real_, 
    NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
    NA_real_, NA_real_, NA_real_)), row.names = c(NA, -10L), class = c("tbl_df", 
"tbl", "data.frame"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...