将两行输出到列 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)
合并数据框!
我目前正在使用 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)
合并数据框!