添加列以在美国人口普查区域标记美国州

时间:2017-09-06 04:49:19

标签: r

我有包含emailaddress和states的数据,我想创建一个标记每个州​​所在区域的列。在SQL中,我是通过case语句完成的,但在R中,最好的方法是什么?我在美国人口普查中定义了地区(截至2017年)。

我的起始数据如下:

emailaddress     states
xyz@gmail.com    NV      
abc@hotmail.com  CA      
bba@gmai.com     UT       
so121@gamil.com  AZ       
ad@yahoo.com     IA       

我希望结果是:

emails           states  regions
xyz@gmail.com    NV      West
abc@hotmail.com  CA      West
bba@gmai.com     UT      West
so121@gamil.com  AZ      West
ad@yahoo.com     IA      Midwest

然后我想将此输出写入csv文件。

感谢任何帮助或起点。

1 个答案:

答案 0 :(得分:2)

像往常一样困难的部分是先收集数据,但我碰巧是从US Census归档的。因此,在运行下面的“州/地区数据”部分后,运行以下代码行

proMISS

输出:

promissTwo

州/地区数据:

df <- data.frame(emails=c("xyz@gmail.com","abc@hotmail.com","bba@gmai.com",
                          "so121@gamil.com","ad@yahoo.com"),
                 states=c("NV","CA","UT","AZ","IA"))

df$regions <- sapply(df$states, 
                 function(x) names(region.list)[grep(x,region.list)])

#Then write to desktop, for example, with:
write.csv(df,"~/Desktop/nameHere.csv",row.names=FALSE)