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

R语言如何将demo变量匹配复制到同一被试多测次的analysis数据集

数据集匹配赋值问题说明与解决

问题描述

现有两个数据集demo和analysis,需要将demo中的beeptime变量匹配复制到analysis数据集中。

  • demo数据集结构如下:
    demo数据集预览
  • analysis数据集结构如下:
    analysis数据集预览

原尝试运行代码:

analysis = analysis %>% mutate(ethnic = case_when(analysis$subjno %in% demo$subjno ~ demo$beeptime))

收到报错:

must be length 5410 or one, not 193.

报错原因

你的判断完全正确:analysis中每个被试存在多条测量数据(共5410行),demo中每个被试仅1行记录(共193行)。case_when()为逐行运算函数,要求赋值右侧向量长度与analysis行数一致,193长度的demo$beeptime无法适配5410行的数据集,因此触发报错。

解决方法

使用dplyr的左连接函数left_join(),按公共字段subjno进行匹配,函数会自动将demo中每个被试对应的beeptime值,同步匹配到analysis中该被试对应的所有行,自动适配长度:

  1. 若需直接新增beeptime列到analysis中,运行以下代码:
# 仅提取demo的subjno、beeptime字段匹配,避免引入demo其他冗余列
analysis <- dplyr::left_join(analysis, demo %>% dplyr::select(subjno, beeptime), by = "subjno")
  1. 若要按原代码逻辑将匹配到的beeptime赋值为新列ethnic,可在连接后重命名列:
analysis <- dplyr::left_join(analysis, demo %>% dplyr::select(subjno, beeptime), by = "subjno") %>%
  dplyr::rename(ethnic = beeptime)

注意事项

匹配前请确认两个数据集的subjno字段格式完全一致(同为数值型/字符型),避免因格式差异导致匹配结果出现NA。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:36:03