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

使用R tidyverse从格式不佳的CSV计算会议出勤率

解决方案

要将你的会议出勤数据转换为整洁(tidy)格式,并计算个人参会百分比,你需要把宽格式的参会者列表拆分为长格式(每行对应一个日期+一个参会者),再做后续统计。以下是具体步骤:

1. 加载必要的包

我们会用到dplyr包的函数来处理数据:

library(dplyr)

2. 将宽格式转换为长格式(tidy格式)

你之前用separate_wider_delim()得到多列结果,是因为它负责把单列拆分为多列;而我们需要把单列的多个值拆分为多行,这时候应该用separate_rows()函数:

# 拆分参会者字符串为单独的行,保留对应会议日期
tidy_meetings <- meeting_tbl %>%
  separate_rows(attendees, sep = " / ")

执行后,tidy_meetings会变成每行对应一个会议日期和一个参会者姓名,同一会议内的重复姓名会保留为多行(比如14/12/2023的Jim Green会有两行)。

3. 处理同一会议内的重复姓名

由于同一会议中重复的姓名应该只算作一次参会(大概率是输入错误),我们可以用distinct()去除重复记录:

# 去除同一会议下的重复参会记录
tidy_meetings_unique <- tidy_meetings %>%
  distinct(dates, attendees, .keep_all = TRUE)

4. 计算个人参会百分比

首先统计总会议数,再计算每个人参加的会议数,最后得出百分比:

# 统计总会议次数
total_meetings <- n_distinct(meeting_tbl$dates)

# 计算每个人的参会次数和百分比
attendance_summary <- tidy_meetings_unique %>%
  group_by(attendees) %>%
  summarize(
    参会次数 = n(),
    参会百分比 = round((参会次数 / total_meetings) * 100, 2)
  ) %>%
  arrange(desc(参会百分比))

执行后,attendance_summary会展示每个人的参会次数和对应的百分比,按百分比从高到低排序。

额外提示

  • 如果你的数据是从外部CSV文件读取的,先用readr::read_csv("你的文件路径.csv")读取数据,再执行上述步骤即可。
  • 如果同一会议内的重复姓名是合法记录(比如同一人多次签到),可以跳过第3步的去重操作,但此时计算参会百分比时,要明确是按签到次数还是会议次数——通常年度报告的参会百分比是按会议次数统计,所以去重更合理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 11:55:24