[英]How to create a pivot table from multiple data.frames in R to write to excel?
我有多個具有相同列數的 data.frames。 我想將這些組合成一個 pivot 表,我可以將其寫入 excel。示例數據幀:
> net_imports[,1:5]
1979 1980 1981 1982 1983
beginning_stocks NA -53 -83 -110 -60.000
production NA -390 -585 -510 -434.996
consumption NA 370 380 390 410.000
ending_stocks 53 83 110 60 46.000
predicted NA 10 -178 -170 -38.996
> area_harvested_output[,1:5]
1979 1980 1981 1982 1983
area_harvested_lag 51.22632 51.2263243 41.6213885 57.6296148 54.4279695
area_harvested_trend 0.00000 0.1007849 0.2015699 0.3023548 0.4031397
import_price_cpi NA 20.4610740 18.7566970 16.8987151 15.2273790
predicted NA 71.7881832 60.5796553 74.8306847 70.0584883
error NA 58.2118168 119.4203447 95.1693153 99.9415117
pred_err NA 130.0000000 180.0000000 170.0000000 170.0000000
我希望 excel 中的結果表看起來像這樣
基本上,我只想將 .net_imports" 和 "area_harvested_output" 之類的變量名稱維護為分組數據。
我將pivot_longer
兩個 data.frames 都變長,這樣那一年就變成了一個而不是(在你的例子中)五列, rbind
或bind_rows
它們並將累積的長表導出到 Excel(然后我將在其中構建交互式 Excel pivot桌子)。
您的示例數據:
net_imports <- structure(list(parameter = c("beginning_stocks", "production",
"consumption", "ending_stocks", "predicted"), X1979 = c(NA, NA,
NA, 53L, NA), X1980 = c(-53L, -390L, 370L, 83L, 10L), X1981 = c(-83L,
-585L, 380L, 110L, -178L), X1982 = c(-110L, -510L, 390L, 60L,
-170L), X1983 = c(-60, -434.996, 410, 46, -38.996)), class = "data.frame", row.names = c(NA,
5L))
area_harvested_output <- structure(list(parameter = c("area_harvested_lag", "area_harvested_trend", "import_price_cpi", "predicted", "error", "pred_err"), X1979 = c(51.22632,
0, NA, NA, NA, NA), X1980 = c(51.2263243, 0.1007849, 20.461074,
71.7881832, 58.2118168, 130), X1981 = c(41.6213885, 0.2015699,
18.756697, 60.5796553, 119.4203447, 180), X1982 = c(57.6296148,
0.3023548, 16.8987151, 74.8306847, 95.1693153, 170), X1983 = c(54.4279695,
0.4031397, 15.227379, 70.0584883, 99.9415117, 170)), class = "data.frame", row.names = c(NA,
6L))
代碼:
library(dplyr)
library(tidyr)
library(rio) ## convenience package for imports/exports
long_table <-
net_imports %>%
pivot_longer(cols = -parameter,
names_to = 'year') %>%
bind_rows(
area_harvested_output %>%
pivot_longer(cols = -parameter,
names_to = 'year')
)
long_table %>% export('long_table.xlsx')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.