У меня есть два фрейма данных: один с правильными ответами, а другой более длинный (больше строк) со всеми ответами опроса. Я хотел бы заменить правильные ответы в одном столбце фрейма данных опроса. Проблема в том, что они имеют разную длину.
Вот пример кода, конечно, функция не работает:
##correct answers df
species_common <- c("algarrobo", "sapote", "palo santo", "tara", "faique", "caoba", "teca", "neem",
"tamarindo", "hualtaco", "guayacan", "eucalyptus", "abarco", "cedro", "caoba", "choiba",
"fresno", "balsa", "acacia", "teca", "melina", "saman", "piñon de oreja", "abarco",
"ceibo", "ebano", "balsa", "ceiba tolúa", "eucalyptus", "teca")
spec_country <- c(rep("Peru",12), rep("Colombia",18))
ecoregion <- c(rep("Dry", 12), rep("Wet", 10), rep("Dry", 8))
species <- as.data.frame(cbind(species_common, spec_country, ecoregion))
##survey df
species_common_2 <- rep(c("algarrobo", "sapote", "palo santo", "tara", "faique", "caoba", "teca", "neem",
"tamarindo", "hualtaco", "guayacan", "eucalyptus", "abarco", "cedro", "caoba", "choiba",
"fresno", "balsa", "acacia", "teca", "melina", "saman", "piñon de oreja", "abarco",
"ceibo", "ebano", "balsa", "ceiba tolúa", "eucalyptus", "teca"), 4)
spec_country_2 <- rep(c(rep("Peru",12), rep("Colombia",18), rep(NA, 90)))
ecoregion_2 <- rep(c(rep("Dry", 12), rep("Wet", 10), rep("Dry", 8)),4)
survey <- as.data.frame(cbind(species_common_2, spec_country_2, ecoregion_2))
rows <- sample(nrow(survey))
survey <- survey[rows,]
## ideal function to match cases in order to fill the country column
survey$spec_country_2 <- ifelse(survey$species_common_2==species$species_common &
survey$ecoregion_2==species$ecoregion,
species$spec_country, survey$spec_country)
Спасибо !!