1
问题和数据
我有以下数据框。对于每个time_frame
,对应的值都在对角线上。下面是创建该数据帧代码:如何提取R中数据帧对角线的值?
> dput(foo)
structure(list(time_frame = c(20948, 23748, 24026, 24350, 24462
), col1 = c(1, 1, 1, 1, 1), col2 = c(2, 2, 2, 2, 2), col3 = c(1,
1, 1, 1, 1), col4 = c(3, 3, 3, 3, 3), col5 = c(1, 1, 1, 1, 1)), .Names = c("time_frame",
"col1", "col2", "col3", "col4", "col5"), row.names = c(NA, -5L
), class = "data.frame")
所需的输出和我试过
我所需的输出是以下几点:
foo2 <- data.frame(time_frame = c(20948, 23748, 24026, 24350, 24462),
turn_signal_state = c(1,2,1,3,1))
我不知道有什么获得此输出的最佳方法。所以,我想tidyr
包如下:
library(tidyr)
foo %>%
gather(col, turn_signal_state, -time_frame)
但是你看,这不正是我需要的。请指导我将什么是将foo
转换为foo2
的最佳方法。我更喜欢使用tidyverse
。此外,原始文件是我使用read.delim
阅读的文本文件。请让我知道是否有可能首先阅读foo2
格式。谢谢。