【发布时间】:2019-02-13 10:22:46
【问题描述】:
我有两列,其中包含有关序列开始和结束的信息。我想从中创建一个序列列,即每个序列从seq_start 为1 时开始,并在seq_start = 1 之后出现的第一行结束,其中seq_end = 1。我怎样才能用tidyverse 做到这一点?数据如下所示,其中seq 是预期输出。请注意,当 seq_end = 1 和 seq_start = 1 在同一行中时,这会产生长度为 1 的序列。
structure(list(seq_start = c(NA, NA, NA, NA, NA, 1, NA, NA, NA,
NA, NA, 1, NA, 1, NA, NA, NA, NA, NA, NA, 1, 1, NA, NA, NA, NA,
NA, 1, 1, NA, NA, 1, NA, NA, NA, 1, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, 1, NA, NA, NA, NA, NA, NA, NA, NA, 1,
NA), seq_end = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 1L,
1L, 1L, 1L, NA, NA, 1L, 1L, 1L, NA, 1L, NA, NA, NA, NA, NA, 1L,
1L, NA, NA, 1L, 1L, NA, 1L, 1L, 1L, 1L, NA, NA, NA, 1L, 1L, NA,
NA, NA, NA, NA, NA, 1L, NA, 1L, 1L, NA, 1L, 1L, NA, NA, 1L, 1L,
1L), seq = c(NA, NA, NA, NA, NA, 1L, 1L, 1L, 1L, 1L, 1L, 2L,
NA, 3L, NA, NA, NA, NA, NA, NA, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 6L,
7L, 7L, 7L, 8L, NA, NA, NA, 9L, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, 10L, 10L, NA, NA, NA, NA, NA, NA, NA, 11L,
NA)), .Names = c("seq_start", "seq_end", "seq"), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -60L))
【问题讨论】:
-
你能提供一个输出样本吗?
-
seq的值从 5 跳到 7(绕过 6)有什么原因吗?根据您描述的逻辑,我不确定我是否理解它是如何工作的。 -
@Salman 输出样本在
seq列中提供 -
@Z.Lin 没有,那是我的错误(我已经更正了)