使用键替换R中数据框中的值

时间:2019-01-20 19:42:17

标签: r data-science

我有一个地方议会和县的地理代码数据集(geog_lookup)-它提供了哪个议会属于哪个县的密钥。

我还有一个“混乱”数据集(测试),该数据集可提供县和市议会的信息,我想使用密钥将其全部转换为市议会。

有人知道该怎么做吗?这是我到目前为止所拥有的?

for (i in geog_lookup[,1]){
  test[,1]<-replace(test[,1], n, value="i")}


> head(geog_lookup)
   DataZone InterZone   Council
1 S01000001 S02000003 S12000033
2 S01000002 S02000001 S12000033
3 S01000003 S02000001 S12000033
4 S01000004 S02000001 S12000033
5 S01000005 S02000003 S12000033
6 S01000006 S02000003 S12000033



> head(test)
   Location Year Reference.Area Dwellings.AC Dwellings.DE Dwellings.FH Total.Crime Hosp.Admissions House.Price
16        i 2008      S01000001         43.5         32.2         24.4          NA            1555      148500
17        i 2009      S01000001         43.5         32.2         24.4          NA             917      122750
18        i 2010      S01000001         44.3         31.7         24.0          NA             875      135000
19        i 2011      S01000001         44.0         31.5         24.5          NA             870      179000
20        i 2012      S01000001         44.3         31.1         24.6          NA            1174      155556
21        i 2013      S01000001         44.2         30.8         25.0          NA              NA      118118
   Job.Seekers Waste.Percapita Percent.Recycling Proximity.Derelict
16       0.350              NA                NA               95.2
17       0.700              NA                NA               95.2
18       0.325              NA                NA               95.0
19       0.975              NA                NA               95.0
20       0.650              NA                NA               93.1
21          NA              NA                NA               90.9

2 个答案:

答案 0 :(得分:2)

这是使用dplyr的方法:

library(dplyr)
test2 <- test %>%
  left_join(geog_lookup, by = c("Reference.Area" = "DataZone"))

这将进行数据库联接(如Excel中的VLOOKUP),该联接将添加geog_lookup中的列,其中的DataZone与您的源数据中的Reference.Area匹配。

答案 1 :(得分:1)

这是基本的R解决方案。

merge(test, geog_lookup, by.x="Reference.Area", by.y="DataZone")