我有一张table:
library("eurostat") library("dplyr") d <- get_eurostat("prc_hicp_manr") %>% filter(coicop == "CP00")
我想创建一个矩阵,日期在行中,国家在列中,我该怎么做?注意,我不能使用上面列出的库以外的库。
gg58donl1#
我们可以先创建geo因子类,然后使用xtabs
geo
xtabs
d2$geo <- factor(d2$geo) xtabs(values ~ time + geo, d2)
geo time Austria Belgium Bulgaria Croatia Cyprus Czechia Denmark Estonia Finland France Greece Hungary Ireland Italy Latvia Lithuania Luxembourg Malta Netherlands Poland Portugal 2000-02-01 1.9 2.1 8.9 3.2 4.7 3.5 2.8 2.9 2.7 1.4 2.6 10.0 4.6 2.4 3.4 0.9 2.6 3.3 1.5 10.5 1.6 2000-03-01 1.9 2.5 9.6 3.5 5.2 3.8 2.9 3.1 3.2 1.6 2.8 9.8 5.0 2.5 3.2 1.0 3.0 3.4 1.6 10.3 1.4 2000-04-01 1.8 2.3 9.2 3.9 5.9 3.4 2.9 3.0 2.5 1.3 2.1 9.4 5.1 2.4 3.7 0.9 3.2 3.4 1.7 9.9 1.9 2000-05-01 1.6 2.4 10.3 3.4 6.0 3.7 2.9 2.8 2.7 1.5 2.6 9.2 5.1 2.5 3.0 0.5 2.9 3.6 2.0 9.8 2.4 2000-06-01 2.4 3.0 11.6 4.5 5.2 4.1 2.9 3.1 3.1 1.8 2.2 9.3 5.4 2.8 2.4 1.3 4.4 3.3 2.5 10.6 2.8.... .....etc.
oewdyzsn2#
如果您需要tidyverse解决方案,可以使用pivot_wider。
pivot_wider
tidyr::pivot_wider(d2[3:5], names_from = geo, values_from = values) #> time Austria Belgium Bulgaria Cyprus Czechia Denmark Estonia #> 1 2022-09-01 11.0 12.1 15.6 9.0 17.8 11.1 24.1 #> 2 2022-08-01 9.3 10.5 15.0 9.6 17.1 9.9 25.2 #> 3 2022-07-01 9.4 10.4 14.9 10.6 17.3 9.6 23.2 #> 4 2022-06-01 8.7 10.5 14.8 9.0 16.6 9.1 22.0 #> 5 2022-05-01 7.7 9.9 13.4 8.8 15.2 8.2 20.1 #> 6 2022-04-01 7.1 9.3 12.1 8.6 13.2 7.4 19.1 #> 7 2022-03-01 6.6 9.3 10.5 6.2 11.9 6.0 14.8 #> 8 2022-02-01 5.5 9.5 8.4 5.8 10.0 5.3 11.6 #> 9 2022-01-01 4.5 8.5 7.7 5.0 8.8 4.9 11.0 #> 10 2021-12-01 3.8 6.6 6.6 4.8 5.4 3.4 12.0 #> ...etc
2条答案
按热度按时间gg58donl1#
我们可以先创建
geo
因子类,然后使用xtabs
oewdyzsn2#
如果您需要tidyverse解决方案,可以使用
pivot_wider
。