首页 > 解决方案 > 根据列规格计算变量

问题描述

我有一个包含眼动追踪数据的数据集,看起来类似于这个 dummy.df

dummy.df <- data.frame(GY = sample(300:600, 500, replace = T), 
                   target.position = sample(c("up", "down"), 500, replace = T),
                   trial.number = rep(1:10, each = 50))
toptargetpos_px <- 550
bottomtargetpos_px <- 350 

GY 是眼睛在 Y 轴上的位置数据。toptargetpos 和 bottomtargetpos 表示眼睛必须穿过的 Y 轴上的水平线。如果横穿水平线,我想改变一个额外的列,指定每个 target.position。

所以能做的是:

dummy.df %>%
  mutate(on.target = GY >= toptargetpos_px)

如果 GY 确实高于 toptargetpos_px,则为 TRUE。但是,我希望脚本考虑到 target.position 是什么(向上或向下),因此它采用相应的水平线(toptargetpos_px 或 bottomtarget_px)

看起来像这样:

dummy.df %>%
  mutate(on.target = GY[target.position == "up"] >= toptargetpos_px) | 
                     GY[target.position == "down" <= bottomtargetpos_px]

但是,这是行不通的。我该怎么做才能让它工作?我当然可以制作 2 列,但这并不理想。

标签: r

解决方案


推荐阅读