如何基于因子列将R中的data.table快速拆分为列表?
具有所需结果的示例(通过硬编码实现)如何基于因子列将R中的data.table快速拆分为列表?,r,list,split,data.table,data-manipulation,R,List,Split,Data.table,Data Manipulation,具有所需结果的示例(通过硬编码实现) DT对于类“data.table”的对象,有一个拆分方法。但与base R的data.frames方法不同,有一个参数by需要引用列名 从帮助('split.data.table'),我的重点是: 详细信息 参数f只是为了与data.frame方法的用法保持一致建议改为按参数使用,它将更快、更灵活,并且默认情况下将根据数据中的顺序保留顺序 相反的是rbindlist。它按照a、b、c的顺序给出原始DT rbindlist(split(DT, by = 'f'
DT对于类“data.table”
的对象,有一个拆分方法。但与base R的data.frames方法不同,有一个参数by
需要引用列名
从帮助('split.data.table')
,我的重点是:
详细信息
参数f只是为了与data.frame方法的用法保持一致建议改为按参数使用,它将更快、更灵活,并且默认情况下将根据数据中的顺序保留顺序
相反的是rbindlist
。它按照a
、b
、c
的顺序给出原始DT
rbindlist(split(DT, by = 'f'))
# val f
#1: 1 a
#2: 4 a
#3: 6 a
#4: 7 a
#5: 2 b
#6: 3 b
#7: 5 b
#8: 8 c
对于data.tables,有一种split
方法split(DT,by='f')
应该这样做。@RuiBarradas,相反的是rbindlist
?是的rbindlist(split(DT,by='f'))
给出原始DT
,行顺序为a、b、c。@RuiBarradas请将您的评论发布为answer@jangorecki完成。谢谢你的注意。
split(DT, by = 'f')
#$a
# val f
#1: 1 a
#2: 4 a
#3: 6 a
#4: 7 a
#
#$b
# val f
#1: 2 b
#2: 3 b
#3: 5 b
#
#$c
# val f
#1: 8 c
rbindlist(split(DT, by = 'f'))
# val f
#1: 1 a
#2: 4 a
#3: 6 a
#4: 7 a
#5: 2 b
#6: 3 b
#7: 5 b
#8: 8 c