如何使用R从另外两个不同大小的向量中构建具有特定数据的新向量

如何使用R从另外两个不同大小的向量中构建具有特定数据的新向量,r,R,我有一个向量,它是一个巴西州的列表,我想形成一个data.frame,告诉你哪个州位于哪个地区 数据框的数据将从一个不一定列出所有州的网站导入,因此,它必须逐个选择一个州,并将根据自己的地区进行调整 然后,我有5个不同的区域向量和它自己的状态 states <- c("AC", "AL", "AM", "AP", "BA", "CE", "DF", "ES", "GO", "MA", "MG", "MS", "MT", "PA", "PB", "PE", "PI", "PR", "RJ"

我有一个向量,它是一个巴西州的列表,我想形成一个data.frame,告诉你哪个州位于哪个地区

数据框的数据将从一个不一定列出所有州的网站导入,因此,它必须逐个选择一个州,并将根据自己的地区进行调整

然后,我有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")

状态我建议将区域信息存储在列表中。此列表可用于创建数据帧

regions <- list(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"))

region_dat <- data.frame(state = unlist(regions),
                         region = rep(names(regions), lengths(regions)))
结果是:

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

我建议将区域信息存储在列表中。此列表可用于创建数据帧

regions <- list(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"))

region_dat <- data.frame(state = unlist(regions),
                         region = rep(names(regions), lengths(regions)))
结果是:

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

如果你能稍微重组一下你的数据,这里有一个
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

如果你能稍微重组一下你的数据,这里有一个
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

这个代码工作得很好!非常感谢@Sven Hohenstein!!这个代码工作得很好!非常感谢@Sven Hohenstein!!