亲爱的,
我是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