是否有一种有效的方法可以将基于列中相同连续元素的数据框拆分为列表(并保持数据框元素在列表中的顺序),如下所示?
数据框:
X__1
S003
S003
S003
S006
S006
S011
S007
S007
S003
S003
S005
S006
进入:
$`1`
S003
S003
S003
$`2`
S006
S006
$`3`
S011
$`4`
S007
S007
$`5`
S003
S003
$`6`
S005
$`7`
S006
我尝试使用:split(df, interaction(df$X__1))
但是这会按照我的列表中的类别创建群组,如下所示:
$`1`
S003
S003
S003
S003
S003
$`2`
S005
$`3`
S006
S006
S006
$`4`
S007
S007
$`6`
S011
感谢您的帮助:)
答案 0 :(得分:5)
我们可以使用data.table中的rleid
函数来分割它,即
split(df, data.table::rleid(df$X__1))
答案 1 :(得分:2)
另一种方法是使用cumsum
。
split(df, cumsum(c(1L, df$X__1[-nrow(df)] != df$X__1[-1])))
数据强>
df <-
structure(list(X__1 = c("S003", "S003", "S003", "S006", "S006",
"S011", "S007", "S007", "S003", "S003", "S005", "S006")), .Names = "X__1", class = "data.frame", row.names = c(NA,
-12L))