У меня есть этот набор данных в 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"))