如何使用R使用来自其他两个不同大小的向量的特定数据构建新向量

时间:2019-03-08 14:08:35

标签: r

我有一个向量,该向量是巴西各州的清单,我想形成一个data.frame来告诉哪个州位于哪个地区。

该数据框的数据将从一个未必列出所有状态的网站导入,因此,它必须一个一个地选择一个状态,并要调整到自己的区域。 / p>

然后,我有5个具有各自状态的不同区域向量。

states <-  c("AC", "AL", "AM", "AP", "BA", "CE", "DF", "ES", "GO", "MA", "MG", "MS", "MT", "PA", "PB", "PE", "PI", "PR", "RJ", "RN", "RO", "RR", "RS", "SC", "SE", "SP", "TO")

no <- c("AC","AP","AM","PA","RO","RR","TO")
su <- c("PR","SC","RS")
co <- c("GO","MG","MS","DF")
ne <- c("AL","BA","CE","MA","PB","PE","PI","RN","SE")
mges <- c("MG","ES")
rj <- c("RJ")
sp <- c("SP")

我需要一个程序来循环网站中的“状态”向量,以形成带有“状态”,“区域”列的数据框。

最困难的部分是从向量中选择特定数据以形成一个存在于该区域的新数据,因为我要导入的数据实际上并不具有所有状态。

1 个答案:

答案 0 :(得分:0)

如果能够稍微重组数据,这是一种tidyverse的工作方式。

library(tidyverse)

df1 = data.frame(states = c("AC","AP","AM","PA","RO","RR","TO"), region='no')
df2 = data.frame(states = c("PR","SC","RS"), region='su')
df3 = data.frame(states = c("GO","MG","MS","DF"), region='co')
df4 = data.frame(states = c("AL","BA","CE","MA","PB","PE","PI","RN","SE"), region='ne')
df5 = data.frame(states = c("MG","ES"), region='mges')
df6 = data.frame(states = c("RJ"), region='rj')
df7 = data.frame(states = c("SP"), region='sp')

dfs = list(df1,df2,df3,df4,df5,df6,df7)

state_regions = bind_rows(dfs)

为每个区域创建一个具有关联状态的数据框。然后合并所有数据帧行。

   states region
1      AC     no
2      AP     no
3      AM     no
4      PA     no
5      RO     no
6      RR     no
7      TO     no
8      PR     su
9      SC     su
10     RS     su
11     GO     co
12     MG     co
13     MS     co
14     DF     co
15     AL     ne
16     BA     ne
17     CE     ne
18     MA     ne
19     PB     ne
20     PE     ne
21     PI     ne
22     RN     ne
23     SE     ne
24     MG   mges
25     ES   mges
26     RJ     rj
27     SP     sp