【发布时间】:2016-12-08 22:51:20
【问题描述】:
我有两个国家数据的数据框。
df1 拥有世界所有国家。
df2 有一个国家的子集,但其中一个列中有人口。
我想获取人口数据并将其添加到国家名称匹配的df1。
如果df1$Column1 = df2$Column1(相同的国家/地区名称),则使用来自df2$Column2(国家/地区的人口)的信息填充df1$Column2(当前为空),其中该行与该国家/地区匹配。
我尝试使用它们都有的国家名称列“名称”来合并两者:
total <- merge(map,Co2_2x, by="NAME")
列都在那里,但我的新数据框中有空行。
我想说“对于df1(国家)中的这一行和列矩阵位置,获取行(df2中的国家名称匹配)和列X(人口数据)。然后把它在df1 中的这一行和列 Y 矩阵位置(df1 中的新人口列用于匹配的国家名称)“......必须有一个更简单的方法:-)
这是我的代码:我想用来自Co2_2x$premium 的国家/地区匹配的数据填充map$measure。
library(XML)
library(raster)
library(rgdal)
download.file("http://thematicmapping.org/downloads/TM_WORLD_BORDERS_SIMPL-0.3.zip",destfile="TM_WORLD_BORDERS_SIMPL-0.3.zip")
unzip("TM_WORLD_BORDERS_SIMPL-0.3.zip",exdir=getwd())
polygons <- shapefile("TM_WORLD_BORDERS_SIMPL-0.3.shp")
polygons
map <- as.data.frame(polygons)
map$Measure <- 0
library(rvest)
Co2 <- read_html("https://en.wikipedia.org/wiki/List_of_countries_by_carbon_dioxide_emissions")
Co2_2x<-Co2 %>%
html_nodes("table") %>%
.[[1]] %>%
html_table()
names(Co2_2x)[2]<-paste("premium")
names(Co2_2x)[1]<-paste("NAME")
total <- merge(map,Co2_2x, by="NAME")
谢谢!
【问题讨论】:
-
嗨,彼得,欢迎来到 SO。你试图解决你的问题是什么?我们必须知道这一点才能给出适当的建议。
-
嗨,文森特,我尝试使用它们都有的国家名称列“名称”来合并两者。 total
-
好的。你能在你的问题中而不是在评论中解释一下吗?
-
谢谢,你的问题已经好多了!我们也喜欢您提供一些代码来总结您的数据 (
df1<-data.frame(...))。这样,我们就可以直接运行您的代码,查看究竟发生了什么,并更快地找到解决方案。另外,提供代码时不要忘记使用代码块。