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

如何将R数据框PN列的被试ID替换为对应ID持有者的VA变量得分

实现方案

你可以通过创建ID到VA值的映射向量,批量替换PN列的值实现需求,以下提供两种常用实现方式:

方法1:基础R实现

# 构造ID到VA的映射向量
va_map <- setNames(df$VA, df$ID)
# 匹配所有PN开头的列
pn_cols <- grep("^PN", names(df), value = T)
# 批量替换PN列值
df[pn_cols] <- lapply(df[pn_cols], function(x) va_map[as.character(x)])

方法2:tidyverse(dplyr)实现

library(dplyr)
va_map <- setNames(df$VA, df$ID)
df <- df %>%
  mutate(across(starts_with("PN"), ~va_map[as.character(.x)]))

注意:将PN列的值转为字符后再索引映射向量,是为了避免ID数值大于映射向量长度时,被错误识别为位置索引导致取值错误。

输出结果

运行上述代码后得到的结果和你预期的转换结果完全一致:

ID PN1 PN2 PN3 VA
1   1   0   1   0  7
2   2   7   1  NA  0
3   3   7   0   3  1
4 400   1   0  NA  3
5 5678  0   3  NA  0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 01:57:02