1

是否有一种有效的方法可以将基于列中相同连续元素的数据框拆分为列表(并保持列表中数据框元素的顺序),如下所示?

数据框:

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

谢谢您的帮助 :)

4

2 回答 2

5

我们可以使用rleiddata.table 中的函数来拆分它,即

split(df, data.table::rleid(df$X__1))
于 2018-01-04T14:47:22.440 回答
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))
于 2018-01-04T14:52:27.303 回答