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

如何用videodata.csv筛选多参与者id_data.csv数据并按影片分类存储?

R实现:基于videodata分割并聚合参与者score数据到对应影片文件

步骤1:读取并整理videodata

首先读取videodata.csv,将每个参与者对应影片的start/end行号转换为宽格式,便于后续提取数据:

library(tidyverse)

# 读取videodata文件
videodata <- read.csv("videodata.csv", stringsAsFactors = FALSE)

# 转换为宽格式,得到每个参与者-影片的起止区间
video_ranges <- videodata %>%
  pivot_wider(
    id_cols = c(Event.Type, Source),
    names_from = Name,
    values_from = Row
  ) %>%
  rename(movie = Event.Type, participant = Source, start_row = start, end_row = end)

步骤2:批量读取所有参与者的id_data文件

假设所有参与者的id_data.csv文件存放在./participant_data/目录下,文件名格式为{participant}_data.csv(如012_data.csv),批量读取并存储到列表中:

# 获取所有参与者数据文件路径
data_files <- list.files(path = "./participant_data/", pattern = "*_data.csv", full.names = TRUE)

# 批量读取文件,列表元素命名为参与者ID
participant_data <- map(data_files, read.csv, stringsAsFactors = FALSE) %>%
  set_names(str_extract(data_files, "\\d{3}")) # 提取文件名中的3位参与者ID

步骤3:按影片聚合数据并保存为独立文件

遍历每个影片,提取对应所有参与者的指定区间score数据,用NA填充对齐不同长度的序列后,保存为以影片命名的csv文件:

# 获取所有唯一影片名称
unique_movies <- unique(video_ranges$movie)

# 遍历处理每个影片
walk(unique_movies, function(current_movie) {
  # 获取当前影片对应的参与者区间信息
  movie_participants <- video_ranges %>% filter(movie == current_movie)
  
  # 提取每个参与者的对应score数据
  movie_data <- map_dfc(movie_participants$participant, function(pid) {
    # 获取当前参与者的起止行号
    range_info <- movie_participants %>% filter(participant == pid)
    start <- range_info$start_row
    end <- range_info$end_row
    
    # 提取score序列,用NA填充对齐最长长度
    scores <- participant_data[[pid]]$score[start:end]
    tibble(!!pid := scores)
  })
  
  # 保存为csv文件,文件名统一小写(如movie1.csv)
  write.csv(movie_data, str_to_lower(paste0(current_movie, ".csv")), row.names = FALSE)
})

补充说明

  • 代码依赖tidyverse包,运行前需确保已安装:install.packages("tidyverse")
  • 若参与者数据文件命名规则不同,需调整str_extract中的正则表达式以正确提取参与者ID
  • 不同长度的score序列会自动用NA填充对齐,保证列结构统一

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 02:35:49