R 将计算转换为列表中的变量
我想在一个大数据集中做一些具体的计算 这是我使用API调用的MWE(下载只需3-4秒)R 将计算转换为列表中的变量,r,list,conditional,data-manipulation,data-cleaning,R,List,Conditional,Data Manipulation,Data Cleaning,我想在一个大数据集中做一些具体的计算 这是我使用API调用的MWE(下载只需3-4秒) 我下载了你的数据,它很复杂。我已经删除了我的错误答案,以便您可以通过@akrun或类似的人得到答案:)我现在没有时间解析它。我找到了以下解决方案 list_assets<-list(FDI_ASSETS=FDI_ASSETS, Portfolio_ASSETS=Portfolio_ASSETS, other_invest_ASSETS=other_invest_ASSETS, fin_der_ASSET
我下载了你的数据,它很复杂。我已经删除了我的错误答案,以便您可以通过@akrun或类似的人得到答案:)我现在没有时间解析它。我找到了以下解决方案
list_assets<-list(FDI_ASSETS=FDI_ASSETS, Portfolio_ASSETS=Portfolio_ASSETS, other_invest_ASSETS=other_invest_ASSETS, fin_der_ASSETS=fin_der_ASSETS, Reserves=Reserves)
for (df in list_assets){
for( i in 1:length(df$"@UNIT_MULT")){
if (df$"@UNIT_MULT"[i]=="6"){
df$Obs[[i]]$"@OBS_VALUE" <- as.numeric(df$Obs[[i]]$"@OBS_VALUE")
df$Obs[[i]]$"@OBS_VALUE" <- df$Obs[[i]]$"@OBS_VALUE"/1000
} else if ((df$"@UNIT_MULT"[i]=="3")){
df$Obs[[i]]$"@OBS_VALUE" <- as.numeric(df$Obs[[i]]$"@OBS_VALUE")
df$Obs[[i]]$"@OBS_VALUE" <- df$Obs[[i]]$"@OBS_VALUE"/1000000
}
}
}
list_assetsI无法访问您所说的OBS_值”。请注意,
OBS_值”是列表中的向量。换句话说,应该相当于:`FDA_资产$Obs$Obs$@Obs_价值'…进行dput(head(FDI_资产,2))和post,以便我们可以看到完整的数据结构。这可能很简单,只要在声明中的所有情况下将FDI_资产$@OBS_值更改为FDI_资产$@OBS_值[[2]],我认为FDI_资产$$OBS[[2]]也不正确,因为在我的例子中,我的元素是一个完整的数据框架,包含三个变量,包括我感兴趣的变量。你能看一下数据结构吗,我已经为你发布了一个更新。我下载了你的数据,它非常复杂。我已经删除了我的错误答案,这样你就可以通过@akrun或类似的人得到答案:)我现在没有时间解析它。不用担心。但我认为我们很接近。我想唯一的困难是正确访问正确的数据。也许现在你可以帮我一点忙@阿卡德豪斯酒店
head(FDI_ASSETS$Obs)
[[1]]
@TIME_PERIOD @OBS_VALUE @OBS_STATUS
1 1980-Q1 30.0318922812441 <NA>
2 1980-Q2 23.8926174547104 <NA>
3 1980-Q3 26.599634375058 <NA>
4 1980-Q4 32.7522451203517 <NA>
5 1981-Q1 44.124979234001 <NA>
6 1981-Q2 35.9907120805994 <NA>
str(FDI_ASSETS)
'data.frame': 375 obs. of 6 variables:
$ @FREQ : chr "Q" "Q" "Q" "Q" ...
$ @REF_AREA : chr "FI" "MX" "MX" "TO" ...
$ @INDICATOR : chr "BFDAE_BP6_USD" "BFDAD_BP6_USD" "BFDAE_BP6_USD" "BFDAD_BP6_USD" ...
$ @UNIT_MULT : chr "6" "6" "6" "3" ...
$ @TIME_FORMAT: chr "P3M" "P3M" "P3M" "P3M" ...
$ Obs :List of 375
..$ :'data.frame': 147 obs. of 3 variables:
.. ..$ @TIME_PERIOD: chr "1980-Q1" "1980-Q2" "1980-Q3" "1980-Q4" ...
.. ..$ @OBS_VALUE : chr "30.0318922812441" "23.8926174547104" "26.599634375058" "32.7522451203517" ...
.. ..$ @OBS_STATUS : chr NA NA NA NA ...
..$ :'data.frame': 60 obs. of 2 variables:
.. ..$ @TIME_PERIOD: chr "2001-Q1" "2001-Q3" "2002-Q1" "2002-Q2" ...
.. ..$ @OBS_VALUE : chr "9.99999999748979E-05" "9.99999997475243E-05" "9.8999999998739E-05" "-9.90000000342661E-05" ...
..$ :'data.frame': 63 obs. of 2 variables:
.. ..$ @TIME_PERIOD: chr "2001-Q1" "2001-Q2" "2001-Q3" "2001-Q4" ...
.. ..$ @OBS_VALUE : chr "130.0149" "189.627" "3453.8319" "630.483" ...
..$ :'data.frame': 17 obs. of 2 variables:
list_assets<-list(FDI_ASSETS=FDI_ASSETS, Portfolio_ASSETS=Portfolio_ASSETS, other_invest_ASSETS=other_invest_ASSETS, fin_der_ASSETS=fin_der_ASSETS, Reserves=Reserves)
for (df in list_assets){
for( i in 1:length(df$"@UNIT_MULT")){
if (df$"@UNIT_MULT"[i]=="6"){
df$Obs[[i]]$"@OBS_VALUE" <- as.numeric(df$Obs[[i]]$"@OBS_VALUE")
df$Obs[[i]]$"@OBS_VALUE" <- df$Obs[[i]]$"@OBS_VALUE"/1000
} else if ((df$"@UNIT_MULT"[i]=="3")){
df$Obs[[i]]$"@OBS_VALUE" <- as.numeric(df$Obs[[i]]$"@OBS_VALUE")
df$Obs[[i]]$"@OBS_VALUE" <- df$Obs[[i]]$"@OBS_VALUE"/1000000
}
}
}