You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R基础包或dplyr将表格转置为日期行、国家列的矩阵?

解决方案

要把数据转成日期为行、国家为列的矩阵,用你已加载的dplyr就能搞定(如果允许用配套的tidyr会更简洁,严格只用列出的库就用base R配合),具体代码如下:

推荐方法(dplyr + tidyr)

tidyr是dplyr的常用配套库,很多R环境里和dplyr同属tidyverse体系,用pivot_wider一步转宽格式,再转矩阵:

library("eurostat")
library("dplyr")
library("tidyr") # 若已安装tidyverse可省略单独加载

d <- get_eurostat("prc_hicp_manr") %>%
  filter(coicop == "CP00") %>%
  # 将国家作为列名,数值对应填充,行保留日期
  pivot_wider(names_from = geo, values_from = values) %>%
  # 把日期列设为行名,再转换为矩阵
  column_to_rownames(var = "time") %>%
  as.matrix()

严格仅用指定库的方法(dplyr + base R)

如果只能用eurostat和dplyr,就用base R的reshape函数配合处理:

library("eurostat")
library("dplyr")

d <- get_eurostat("prc_hicp_manr") %>%
  filter(coicop == "CP00") %>%
  as.data.frame() %>%
  reshape(
    idvar = "time",  # 行标识为日期
    timevar = "geo", # 列标识为国家
    direction = "wide", # 转换为宽格式
    v.names = "values"  # 要填充的数值列
  ) %>%
  # 去掉列名里的"values."前缀,让列名直接为国家代码
  rename_with(~ gsub("values\\.", "", .), starts_with("values.")) %>%
  # 设置日期为行名并转换为矩阵
  column_to_rownames(var = "time") %>%
  as.matrix()

补充说明:

  • get_eurostat返回的time列默认是Date类型,无需额外转换即可作为行索引
  • 转换后的矩阵中,每一行对应一个月份,每一列对应一个欧盟国家/地区,单元格值为对应国家的HICP月度通胀数据

内容的提问来源于stack exchange,提问作者Ola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 15:05:14