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

如何在R中匹配数据至指定行列(或带匹配的转置)

R实现员工班次数据宽表转换(新手友好版)

核心思路

先把分散的每日数据合并成带日期标记的长表,再转置成按日期为行、员工信息为列的宽表,最后替换缺失值。


1. 合并每日数据集

先给每个单日数据集加上Day列标记工作日编号,再合并成一个总表:

# 给各单日数据加日期列
Day1Set$Day <- 1
Day2Set$Day <- 2
# 有更多天数就继续加,比如Day3Set$Day <- 3

# 合并所有数据到一个总表
total_data <- rbind(Day1Set, Day2Set)

2. 转置成目标宽表

用tidyverse包的pivot_wider函数,这是新手最容易上手的转置工具:

# 首次使用先安装包
install.packages("tidyverse")
library(tidyverse)

# 转置操作:按Day分行,员工姓名作为列前缀,对应shift和work_time的值
wide_data <- total_data %>%
  pivot_wider(
    id_cols = Day,  # 行维度:工作日
    names_from = name,  # 列名的来源:员工姓名
    values_from = c(shift, work_time),  # 要转置的变量
    names_glue = "{name}_{.value}"  # 列名格式:员工名_变量名(比如Worker1_shift)
  )

3. 替换缺失值为"-"

把表中无数据的NA替换成你需要的-:

wide_data[is.na(wide_data)] <- "-"

新手参考关键词

你可以搜索这些术语找更多资料:R 长表转宽表、pivot_wider 用法、R 数据合并

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 07:05:09