我怎样才能执行一个PROCV(或VLOOKUP,在Excel中)与R

R中的数据框名为OP1DadosCelDez12,如下所示:

State City QuedasConx ConxEstab Sol.ConxDadosAtend Sol.ConxDados SC ABDON BATISTA 25071 2176654 2105688 2180192 SC ABDON BATISTA 10319 1594057 1562627 1740117 SC ADAMANTINA 79210 7723455 7468357 7772426 MG ADOLFO 43230 2820074 2655908 2867880 MG AGROLANDIA 120016 10633996 10273314 10836846 SP AGROLANDIA 106545 9184706 8611340 9377591 

我能够使用聚合函数合并每个城市的QuedasConx,ConxEstab,Sol.ConxDadosAtend和Sol.ConxDados(数值)的每一列。 例如:

 agg1 <- aggregate(OP1DadosCelDez12$Sol.ConxDadosAtend, data.frame(OP1DadosCelDez12$Município), FUN=sum, na.rm=FALSE) (...) 

然后我创build了一个新的数据框架,它应该有相同的variables,但每个城市只有一行。

 ClaroDadosMunDez12 <- data.frame(agg0,agg1$Município,agg1$QuedasConx, agg2$ConxEstab,agg3$Sol.ConxDadosAtend,agg4$Sol.ConxDados) colnames(ClaroDadosMunDez12)[1] <- "UF" colnames(ClaroDadosMunDez12)[2] <- "Município" colnames(ClaroDadosMunDez12)[3] <- "QuedasConx" colnames(ClaroDadosMunDez12)[4] <- "ConxEstab" colnames(ClaroDadosMunDez12)[5] <- "Sol.ConxDadosAtend" colnames(ClaroDadosMunDez12)[6] <- "Sol.ConxDados" 

期望的结果是这样的:

 State City QuedasConx ConxEstab Sol.ConxDadosAtend Sol.ConxDados SC ABDON BATISTA 35390 3770711 3668315 3920309 SC ADAMANTINA 79210 7723455 7468357 7772426 MG ADOLFO 43230 2820074 2655908 2867880 MG AGROLANDIA 226561 19818702 18884654 20214437 

我的问题是我无法读取每个城市的唯一行的状态值,并将其写入variablesOP1DadosMunDez12 $ UF(的新数据框)。

我可以使用MS EXCEL中的procv命令轻松完成这个任务,但是我在R中遇到困难。欣赏你的时间。

下面是你可以做什么来得到你所描述的“ 理想的结果 ”:

 # input data dat <- read.table(header= TRUE, text = "State City QuedasConx ConxEstab SolConxDadosAtend SolConxDados SC ABDONBATISTA 25071 2176654 2105688 2180192 SC ABDONBATISTA 10319 1594057 1562627 1740117 SC ADAMANTINA 79210 7723455 7468357 7772426 MG ADOLFO 43230 2820074 2655908 2867880 MG AGROLANDIA 120016 10633996 10273314 10836846 SP AGROLANDIA 106545 9184706 8611340 9377591") # summarise by state aggregate(dat[,3:6],by=list(dat[,2]),FUN=sum) Group.1 QuedasConx ConxEstab SolConxDadosAtend SolConxDados 1 ABDONBATISTA 35390 3770711 3668315 3920309 2 ADAMANTINA 79210 7723455 7468357 7772426 3 ADOLFO 43230 2820074 2655908 2867880 4 AGROLANDIA 226561 19818702 18884654 20214437 # this will give the same result library(plyr) ddply(dat, .(City), function(x) ( colSums(x[,3:6]) )) # and this will also... library(sqldf) sqldf("SELECT City, SUM(QuedasConx), SUM(ConxEstab), SUM(SolConxDadosAtend), SUM(SolConxDados) FROM dat GROUP BY City") 

在你的问题的aggregate代码不适合我,我不能重现你的ClaroDadosMunDez12dataframe,什么是在agg0agg4

另外,似乎你想要做比我在这里展示的更多的东西,你可以编辑你的问题来更清楚地解释你想要做什么?