我有一個名爲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
所有的解決方案我已經看到了使用轉碼或同樣涉及到明確說明其價值相當於其作爲cars
包例子:recode(x, "c(1,2)='A'; else='B'")
我想要做什麼,而不是,如果city$Code
與traffic$city
匹配,則使用city$Definition
中的字符串替換traffic$city
中的數字代碼。
我可以做traffic<-merge(traffic, city, by.x = "city", by.y = "Code")
然後traffic$city<-traffic$Definition
然後traffic$Definition<-NULL
,但它似乎是這將是一個常見的足夠的操作,將有一個方便的功能來做到這一點。
一個解決方案的加分點,它允許我指定多個列以被多個文件中的值替換,而不用重複太多。
提供的匹配解決方案肯定似乎是我會嘗試的方法。您在最後一句中提出的解決方案請求顯得過於模糊。爲什麼不張貼另一個問題,提供一個更具體的起點? – 2012-07-07 21:50:11
讓我讓最後一部分更清楚 - 我擁有的文件不僅僅是「城市」。我希望能夠對各個城市和縣進行重新編碼,並且從他們各自的文件中確定各自的價值,而不必爲每個文件單獨編寫一份匹配聲明。雖然可能比它的價值更多的努力。 – 2012-07-07 22:13:40
這不是'merge'的明顯例子嗎?細節(如先前所建議的那樣需要確定。 – 2012-07-08 01:38:04