【问题标题】:R - Find the begin and the end of timestamp according with values in another columnR - 根据另一列中的值查找时间戳的开始和结束
【发布时间】:2017-05-24 05:02:52
【问题描述】:

亲爱的,

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

我有一个类似的 data.frame...

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 毫秒

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

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

【问题讨论】:

  • 您期望的结果是什么?您是想将差异可视化,还是想检验一个特定的假设?
  • 嗨@AdamQuek 非常感谢您的关注。 akrun 和 ikop 已经提供了解决方案,但我非常感谢您的处理

标签: r dataframe timestamp data-manipulation


【解决方案1】:

您可以使用 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

【讨论】:

    【解决方案2】:

    我们可以使用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
    

    【讨论】:

    • 嗨@akrun,非常感谢您的帮助。我会更密切地研究这个函数的属性。祝您度过愉快的一周!
    • @FabioAlvesCarvalho 感谢 cmets。也祝您度过愉快的一周!
    猜你喜欢
    • 1970-01-01
    • 2022-08-18
    • 2013-01-11
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-26
    • 2019-12-06
    相关资源
    最近更新 更多