簡體   English   中英

如何根據因子列將 R 中的 data.table 快速拆分為列表?

[英]How to quickly split a data.table in R based on factor column into a list?

具有所需結果的示例(通過硬編碼實現)

DT <- data.table(val=1:8, f=c('a','b','b','a','b','a','a','c'))  
required <- list(DT[f=='a'], DT[f=='b'], DT[f=='c'])

"data.table"對象有一個split方法。 但是,與在基礎R對data.frames方法,有一種說法by認為需要引用列名。

help('split.data.table') ,我的重點:

細節
參數 f 只是為了在使用上與 data.frame 方法保持一致。 推薦使用 by argument ,它會更快,更靈活,並且默認會根據數據中的順序保留順序。

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 它給出了原始 DT,其中的行按abc順序排列。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM