繁体   English   中英

我如何在 R 中为这些过程使用 for 循环

[英]How can I use for loop for these process in R

我有一个包含 43 个不同国家的数据框。 总结我的数据框,行名称如下:(AUS1, AUS2, AUS3, ... BRA1, BRA2, ... GER1, GER2...GER56) 并且有一个像 Country 这样的变量,其中包括国家代码。

我需要找到他们的出口值。 我可以单独找到,但是要花很多时间,因为我有 14 个不同的年份。 因此,我想使用 for 循环。 但是,我找不到任何方法可以在以下过程中使用 for 循环。

这是我查找单个国家出口的代码。

##AUT

AUT <- filter(wiot, wiot$Country == "AUT")
exportAUT <- sum(AUT$TOT) - sum(select(AUT, starts_with("AUT")))

##BEL

BEL <- filter(wiot, wiot$Country == "BEL")
exportBEL <- sum(BEL$TOT) - sum(select(BEL, starts_with("BEL")))

尝试为这组结果创建单独命名的对象是 R 中的疯狂之路。 相反,创建一个具有更通用名称的列表,然后将结果放在列表中的“叶子”(单个元素)中:

 export <- list()
 for (i in wiot$Country) { 
               export[i] <- sum(wiot[i]$TOT) - sum(select(wiot, starts_with(i)))
       #or maybe: export[i] <- sum(wiot[i]$TOT) - sum(wiot[ grepl(i,names(wiot)) ] )
                          }

这是一个猜测,因为我无法弄清楚如何在 data.frame 对象中引用行和列。 如果您对名为wiot的数据对象提供了一个不那么模糊的描述,那么调试它会容易wiot 使用str(wiot)输出或显示dput(head(wiot))

考虑基础R的by建立出口计算的命名列表:

export_list <- by(wiot, wiot$country, function(sub)
   sum(sub$TOT) - sum(select(sub, starts_with(sub$country[1])))
)

export_list$AUT
export_list$BEL
export_list$GER
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM