我有一个心理学实验的数据,从每个实验开始以来的时间,我想要的是,从每个实验开始以来,每个主题的时间。要做到这一点,我基本上只是将每个试用/subject的最小时间值减去相同的试用/主题的所有值。
我目前正在用两个for循环来实现它,我只是想知道是否有一种方法可以将它矢量化。我现在拥有的是:
for (s in 1:max(df$Subject)){
subject <- df[df$Subject==s,]
for (t in 1:max(subject$TrialId)){
trial <- subject[subject$TrialId==t,]
start_offset <- min(trial$timestamp)
df$timestamp[df$Subject==s & df$TrialId==t] <- df$timestamp[df$Subject==s &
df$TrialId==t]
- start_offset
}
}我想要的是
df$timestamp <- df$timestamp - min_per_trial_per_subject(df$timestamp)发布于 2017-11-08 16:08:12
用dplyr
library(dplyr)
df %>% group_by(Subject, TrialId) %>%
mutate(modified_timestamp = timestamp - min(timestamp))应该行得通。如果没有,请分享一个可重复的例子,以便我们可以测试。
https://stackoverflow.com/questions/47184293
复制相似问题