将两行输出到列 R

Make output of two rows into columns R

我目前正在使用 BORIS 中的视频分析在 R 中处理行为数据。每次观察时间为 15 秒,在观察过程中,我记录了对象、它的行为以及一些背景信息,例如日期、时间、温度等。但是,程序已将这些背景信息放在“行为”栏下(所以其中一个行为现在是“日期”)及其在“修饰符”列下的输出(例如现在说“15-10-2020”)。

我想要的是制作更多的日期、时间等列(来自“行为”列)并将其输出(来自“修饰符”列)放在这些列中,以便每个行为都有一个主题,日期、时间、温度等。但是我不知道该怎么做。

我考虑过使用聚合函数,但这给了我很多主要是 NA 的额外行。我还查看了“tibble”包,但也无法真正实现它。

如有任何建议,我们将不胜感激!

一些示例行(来自 dput()):

structure(list(Subject = structure(c(2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 7L), .Label = c("fallow deer female", "fallow deer female + calf", 
"red deer female + calf", "roe deer male", "wild boar + young", 
"wild boar male", "wild boar unknown sex"), class = "factor"), 
    Behavior = structure(c(1L, 2L, 8L, 7L, 12L, 3L, 5L, 10L, 
    6L, 4L), .Label = c("auditory vigilant", "date", "day/night", 
    "foraging", "nr. of individuals", "running", "temperature", 
    "time of day", "unknown behaviour", "walking", "walking while vigilant", 
    "weather"), class = "factor"), Behavioral.category = structure(c(4L, 
    2L, 2L, 2L, 2L, 2L, 2L, 3L, 4L, 3L), .Label = c("", "Background information", 
    "Non-vigilant", "Vigilant"), class = "factor"), Modifiers = structure(c(1L, 
    4L, 21L, 27L, 35L, 36L, 32L, 1L, 1L, 1L), .Label = c("", 
    "0346", "0347", "07172020", "07182020", "07212020", "07242020", 
    "07262020", "07272020", "08032020", "08052020", "1", "12", 
    "1307", "1327", "1342", "1343", "1430", "1528", "16", "1604", 
    "17", "1744", "21", "2119", "2120", "22", "23", "25", "26", 
    "3", "4", "7", "Clear", "Cloudy", "Day", "Night"), class = "factor")), row.names = c(NA, 
10L), class = "data.frame")

我想要的输出将作为列名给出:Subject;行为;日期;一天中的时间;温度。修改器输出将是“日期”、“时间”、“温度”列的值。当这有效时,我可以删除修饰符列(因为它的所有值都已经在分配的列中)。

在实际行为和背景信息中拆分数据框。对后台信息执行这段代码:

tidyr::pivot_wider(your_data, names_from = Behavior, values_from = Modifiers)

合并数据框!