R - 根据另一列中的值查找时间戳的开始和结束



亲爱的,

我是R编程的新手,因此,我来这里向您寻求帮助。我正在尝试找出解决此问题的方法。我一直在努力,但没有成功。

我有一个类似的数据帧...

df2 <- data.frame(Recordig = c("Rec1", "Rec1", "Rec1", "Rec1", "Rec1", "Rec1", 
"Rec2","Rec2","Rec2","Rec2","Rec2","Rec2"), 
MediaName = c("Imagem1","Imagem1","Imagem1",
"Estimulo1","Estimulo1","Estimulo1",
"Imagem1","Imagem1","Imagem1",
"Estimulo1","Estimulo1","Estimulo1"),
Timestamp = c( 4975 , 5155 , 5312 ,25076, 25463 ,26040 , 5035 , 5248, 5551, 17047 , 17263,  17533))

简化版本如下

Recordig MediaName Timestamp
1      Rec1   Imagem1      4975
2      Rec1   Imagem1      5155
3      Rec1   Imagem1      5312
4      Rec1 Estimulo1     25076
5      Rec1 Estimulo1     25463
6      Rec1 Estimulo1     26040
7      Rec2   Imagem1      5035
8      Rec2   Imagem1      5248
9      Rec2   Imagem1      5551
10     Rec2 Estimulo1     17047
11     Rec2 Estimulo1     17263
12     Rec2 Estimulo1     17533

我的观点是什么?我需要确切地知道参与者(例如Rec1)查看每个图像(Image1)所花费的时间。在本例中,Image1 的时间戳从 4.975 秒开始,到 5.312 秒结束,给出 333 毫秒

关键是我有数百张图像和数千名受访者花费了不同的时间来观察图像。

请问有人有什么想法可以帮助我吗?

您可以使用dplyr包找到每个参与者 (Recordig) 和图像 (MediaName) 的第一个和最后一个时间戳之间的差异:

library(dplyr)
df3 <- df2 %>% 
dplyr::group_by(Recordig, MediaName) %>%
dplyr::summarise(duration = diff(range(Timestamp)))
df3
# Source: local data frame [4 x 3]
# Groups: Recordig [?]
# 
#   Recordig MediaName duration
#     <fctr>    <fctr>    <dbl>
# 1     Rec1 Estimulo1      964
# 2     Rec1   Imagem1      337
# 3     Rec2 Estimulo1      486
# 4     Rec2   Imagem1      516

我们可以使用base R

aggregate(cbind(duration = Timestamp) ~Recordig + MediaName, df2,
FUN = function(x) diff(range(x)))
#    Recordig MediaName duration
#1     Rec1 Estimulo1      964
#2     Rec2 Estimulo1      486
#3     Rec1   Imagem1      337
#4     Rec2   Imagem1      516

最新更新