重塑数据框:将年份设为列,原变量转为KPI行以计算变动
数据框重塑:将年份转为列、KPI转为行
你可以用R的tidyverse工具包(核心是tidyr中的pivot_longer和pivot_wider函数)完成这个数据重塑需求,具体步骤如下:
1. 加载依赖包
library(tidyverse)
2. 原始数据
df <- data.frame( PERIOD = c(2020, 2021), map = c(1, 2), mac = c(1, 4) )
3. 执行数据重塑
先把宽格式的map、mac列转成长格式的kpi和value列,再将PERIOD转为列名:
reshaped_df <- df %>% pivot_longer(cols = c(map, mac), names_to = "kpi", values_to = "value") %>% pivot_wider(names_from = PERIOD, values_from = value)
4. 重塑后结果
运行代码后得到的目标数据框:
# A tibble: 2 × 3 kpi `2020` `2021` <chr> <dbl> <dbl> 1 map 1 2 2 mac 1 4
5. 计算KPI变动值
基于重塑后的结构,可轻松计算任意两年的变动(差值或增长率):
# 计算2021相对2020的差值 reshaped_df <- reshaped_df %>% mutate(diff_2021_2020 = `2021` - `2020`) # 计算2021相对2020的增长率(百分比) reshaped_df <- reshaped_df %>% mutate(growth_rate = (`2021` - `2020`) / `2020` * 100)
内容的提问来源于stack exchange,提问作者Emiliano Barone
相关产品推荐
相关产品推荐

