我想基于另一列中的值添加一个称为“ real_rt”的新列。
数据框中感兴趣的列是:
“ Real_rt”仅应基于RT减去StimOnset的RT,前提是RT中的值> 0(否则应保持为0)。 但是,此计算仅应针对go试验(列“ trail_type”)进行。
我知道如何添加新列以及如何制作for循环和if-statemanet(bc,我认为这是我在这里所需要的),但我不知道如何将这3个结合起来得到我想要的。任何想法将不胜感激。
答案 0 :(得分:1)
这可能会指引您正确的方向。
df <- data.frame(X = c(1, 0, 2, 4),
Y = c(2, -1, 0, 5))
df$Z <- ifelse(df$Y > 0, df$X - df$Y, 0)
df
# X Y Z
#1 1 2 -1
#2 0 -1 0
#3 2 0 0
#4 4 5 -1
答案 1 :(得分:0)
我喜欢从tidyverse软件包中将mutate与case_when结合使用:
require(tidyverse)
df <- data.frame(StimOnset = c(1, 0, 2, 4),
RT = c(2, -1, 0, 5),
trial_type = c("go", "nogo", "go", "nogo"))
df <- df %>%
mutate(
Real_rt = case_when(
trial_type == "go" & RT > 0 ~ StimOnset - RT,
TRUE ~ 0
)
)
df
StimOnset RT trial_type Real_rt
1 1 2 go -1
2 0 -1 nogo 0
3 2 0 go 0
4 4 5 nogo 0