我希望一切都好。我最近开发了一个代码(在奇妙的堆栈溢出社区的帮助下)来计算第一次锁定的时间,第一次固定的持续时间,以及对感兴趣区域的总访问持续时间。我现在想要更新它,这样它就可以根据所呈现的刺激进行调整。具体地说,x和y坐标在每个刺激之间都有微小的变化。我有一个刺激坐标的示例电子表格。如果我能把它们读进去就太好了。将其与Final_Label数据中的刺激相匹配,并能够计算和总结所有试验中的这些指标。因此,我需要代码中的一些东西来说明-如果是这个刺激(例如,A1使用这些坐标等)。
感谢您的帮助,请让我知道,如果我现在可以提供任何进一步的信息。
保重,好好待着,
卡罗琳
Face_AOI <- Final_Labels %>%
mutate(AOI_face = (mean_x >= .100 & mean_x <= .500 & mean_y >= .100 & mean_y <= .800), #These numbers are FAKE ###) %>%
filter(AOI_face) %>%
group_by(SubjectID, Trial) %>%
summarize(Face_totalfixationduration = sum(Duration), Face_firstfixationduration = first(Duration), Face_timetofirstfixation = first(Start))
Mouth_AOI <- Final_Labels %>%
mutate(AOI_mouth = (mean_x >= .200 & mean_x <= .300 & mean_y >= .500 & mean_y <= .600)) %>%
filter(AOI_mouth) %>%
group_by(SubjectID, Trial) %>%
summarize(Mouth_totalfixationduration = sum(Duration), Mouth_firstfixationduration = first(Duration), Mouth_timetofirstfixation = first(Start))
Mouth_AOI$SubjectID <- NULL
Eyes_AOI <- Final_Labels %>%
mutate(
AOI_eyes = (mean_x >= .200 & mean_x <= .300 & mean_y >= .500 & mean_y <= .600)) %>%
filter(AOI_eyes) %>%
group_by(SubjectID, Trial) %>%
summarize(Eyes_totalfixationduration = sum(Duration), Eyes_firstfixationduration = first(Duration), Eyes_timetofirstfixation = first(Start))
将具有不同坐标的刺激列表集成到上述代码中的示例。
Df2 <- data.frame(Stimuli = c("A1", "A1", "A1", "A2", "A2", "A2"),
AOI = C("Face", "Eyes", "Mouth", "Face", "Eyes", "Mouth"),
X1 = c(0, 300, 301, 0, 305, 306),
X2 = c(1022, 600, 600, 0, 604, 604),
Y1 = c(0, 30, 31, 0, 30, 38),
Y2 = c(0, 300, 301, 6, 305, 306))
以下是Final_Labels数据帧的示例
Final_Labels <- data.frame(Stimuli = c("A1.jpg", "A2.jpg", "A3.jpg", "A4.jpg", "A5.jpg", "H1.jpg"), ##note we will need .jpg to be removed to match the files
Duration = c(300, NA, 300, 60, NA, NA),
Start = c(100, NA, 1, 100, NA, NA),
End = c(160, NA, 301, 160, NA, NA),
mean_x = c(.3, NA, .50, .40, NA, NA),
mean_y = c(.5, NA, .4, .5, NA, NA))
发布于 2020-11-04 14:47:02
下面是删除".jpg“并根据刺激值进行连接的代码。
library(dplyr)
library(stringr)
Final_Labels %>%
mutate(Stimuli = str_remove(Stimuli, fixed(".jpg"))) %>%
full_join(Df2)
# Stimuli Duration Start End mean_x mean_y AOI X1 X2 Y1 Y2
# 1 A1 300 100 160 0.3 0.5 Face 0 1022 0 0
# 2 A1 300 100 160 0.3 0.5 Eyes 300 600 30 300
# 3 A1 300 100 160 0.3 0.5 Mouth 301 600 31 301
# 4 A2 NA NA NA NA NA Face 0 0 0 6
# 5 A2 NA NA NA NA NA Eyes 305 604 30 305
# 6 A2 NA NA NA NA NA Mouth 306 604 38 306
# 7 A3 300 1 301 0.5 0.4 <NA> NA NA NA NA
# 8 A4 60 100 160 0.4 0.5 <NA> NA NA NA NA
# 9 A5 NA NA NA NA NA <NA> NA NA NA NA
# 10 H1 NA NA NA NA NA <NA> NA NA NA NA
我使用了full_join
,它将保留两个数据帧中的所有行。如果需要不同的行为,可以改用inner
、left
或right
joins。(Inner将只保留匹配的行,left和right将分别保留第一个或第二个数据帧中的所有行,以及其他数据帧中匹配的所有行。
https://stackoverflow.com/questions/64596564
复制相似问题