【发布时间】:2016-04-19 00:30:34
【问题描述】:
我有一个使用唯一 ID 但这些 ID 的可读名称不一致的表。它比月份名称更复杂,但为了更简单的示例,假设它看起来像这样:
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)
除了他们可能用八种不同的方式拼写“Feb”或“March”。我还有一个干净的数据框,其中包含有变化的名称的一致名称:
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"),但由于查找表中不存在“Jan”,因此删除了所有一月份的值:
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
我对@987654321@ 的阅读是我应该能够使用plyr::mapvalues,但我从示例和文档中不清楚如何将id 映射到name。我不只是想说“用'Mar'替换'March'”——我需要为查找中的每个值说SET month_name = 'Mar' WHERE month_id = 3。
【问题讨论】:
-
为什么不把两张表合并在一起?
-
对不起。应该包括
merge失败的地方。固定。 -
只需将 Jan 添加到查找表中?使用
data.frame(month.abb = month.abb, Month_id = 1:12)可以轻松生成查找表
标签: r