宽 —> 长

使用 pivot_longer() 可以讲宽数据转换为长数据:

table4a |> pivot_longer(cols = 2:3, names_to = 'year', values_to = 'cases')

其中:

  • cols 指定修改的列,可以使用负索引,可以使用字符串处理-stringr 的方法,比如 starts_with() 等等
  • names_to 系列可以改变列名,默认是 valuesname
billboard |> 
+pivot_longer(cols = starts_with("wk"), names_prefix = "wk"names_to = "week"values_to = "rank"values_drop_na = TRUE)

长 —> 宽

将长数据转换为宽数据(使用 pivot_wider())的主要应用价值在于:

  1. 提高数据可读性:将多行合并为一行,使数据更紧凑,便于人类阅读和比较。
  2. 适配分析工具:许多统计模型和可视化工具(如线性回归、热图)要求输入为宽格式数据。
  3. 简化汇总操作:便于计算跨时间点或类别的汇总统计量(如平均值、总和)。
  4. 匹配输出需求:报告或表格常要求宽格式以展示关键指标(如年度销售额、患者多时间点测量值)。

例如,在临床研究中,将患者多次随访的长数据转换为宽格式,可以直观对比同一患者不同时间点的指标变化,便于进行横向分析或生成交叉表。

使用 names_fromvalues_from 可以选定长数据中名称-值 对,并将长数据转化为宽数据。

us_rent_income |> pivot_wider(names_from = variable, values_from = c(estimate, moe))