R语言使用lag函数求和填充行为实验数据onset列NA值问题
问题诊断
- 原代码的核心错误是多余调用了
sum()函数:lag()返回的是和原数据集等长的向量,sum()会把所有偏移后的计算结果聚合为单个数值,导致所有NA行都会被填充为同一个错误的总和值,无法逐行匹配计算。 - 无需额外加和运算,直接取偏移2行的
onset与Latency相加即可。
正确实现代码
dplyr版本(适配你原来的写法)
library(dplyr) data$onset <- if_else( is.na(data$onset), lag(data$onset, n = 2) + lag(data$Latency, n = 2), data$onset )
Base R版本(无需加载额外包,性能更稳定)
# 定位所有onset为NA的行位置 na_pos <- which(is.na(data$onset)) # 直接取对应上移2行的数值计算后填充 data$onset[na_pos] <- data$onset[na_pos - 2] + data$Latency[na_pos - 2]
注:两种实现都默认每个onset为NA的反应行,其上数第2行都是对应的目标刺激行,和你给出的任务逻辑完全匹配。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

