我有一个名为的文件traffic
,如下所示:
city statenum casenum vnumber pnumber county accdate accday accmin accmon acctime
-1 6 23 1 1 47 1082010 8 50 1 150
0 6 25 1 1 73 1042010 4 0 1 2200
0 6 652 1 4 71 3282010 28 1 3 1901
1 6 1289 1 2 71 7152010 15 40 7 2140
4 6 1289 1 3 71 7152010 15 40 7 2140
1 6 1289 1 4 71 7152010 15 40 7 2140
以及一组单独的文件,告诉我每列中的数字代码指的是什么。例如,我有一个名为的文件city
,如下所示:
Code Definition
-1 Blank
0 NA
1 ACAMPO
2 ACTON
3 ADELANTO
4 ADIN
如何使用city
文件中的代码替换 中的编码值traffic
?输出将如下所示:
city statenum casenum vnumber pnumber county accdate accday accmin accmon acctime
Blank 6 23 1 1 47 1082010 8 50 1 150
NA 6 25 1 1 73 1042010 4 0 1 2200
NA 6 652 1 4 71 3282010 28 1 3 1901
ACAMPO 6 1289 1 2 71 7152010 15 40 7 2140
ADIN 6 1289 1 3 71 7152010 15 40 7 2140
ACAMPO 6 1289 1 4 71 7152010 15 40 7 2140
我使用 recode 看到的所有解决方案或同样涉及明确说明哪个值对应于cars
包示例中的哪个值:recode(x, "c(1,2)='A'; else='B'")
相反,我想做的是让字符串city$Definition
替换traffic$city
if city$Code
matches中的数字代码traffic$city
。
我可以做traffic<-merge(traffic, city, by.x = "city", by.y = "Code")
and traffic$city<-traffic$Definition
then traffic$Definition<-NULL
,但看起来这将是一个足够常见的操作,因此会有一个方便的功能来执行此操作。
一个解决方案的奖励点,它允许我指定多个列被多个文件中的值替换,而不会重复自己太多。