У меня есть таблица, которая использует уникальные идентификаторы, но несовместимые читаемые имена для этих идентификаторов. Это гораздо сложнее, чем названия месяцев, но ради более простого примера, скажем, это выглядит примерно так:Как обновить данные из неполной таблицы поиска?
demo_frame <- read.table(text=" Month_id Month_name Number
1 Jan 37
2 Feb 63
3 March 9
3 Mar 150
2 February 49", header=TRUE)
исключением того, что они, возможно, написано «Фев» или «марта» восемь различных способов. У меня также есть чистый кадр данных, содержащий согласованные имена для имен, которые имеют вариации:
month_lookup <- read.table(text=" Month_id Month_name
2 Feb
3 Mar", header=TRUE)
Я хочу, чтобы добраться до этого:
1 Jan 37
2 Feb 63
3 Mar 9
3 Mar 150
2 Feb 49"
Я попытался merge(month_lookup, demo_frame, by = "Month_id")
но отбросил все значения января, потому что «Ян» не существует в таблице поиска:
Month_id Month_name.x Month_name.y Number
1 2 Feb Feb 63
2 2 Feb February 49
3 3 Mar March 9
4 3 Mar Mar 150
Мое чтением из How to replace data.frame column names with string in corresponding lookup table in R является то, что я должен быть в состоянии использовать plyr::mapvalues
но я дядя ar из примеров и документации о том, как я сопоставил id
с name
. Я не просто хочу сказать «Заменить« Март »на« Мар »- мне нужно сказать SET month_name = 'Mar' WHERE month_id = 3
для каждого значения в поиске.
Почему бы просто не объединить две таблицы вместе? – bramtayl
Извините. Должно быть включено, где 'merge' не удалось. Исправлена. – Amanda
Просто добавьте Jan в таблицу поиска? Таблицу поиска легко сгенерировать с помощью 'data.frame (month.abb = month.abb, Month_id = 1:12)' – bramtayl