[問題] data.table取出符合條件的資料
[問題類型]:
效能諮詢(我想讓R 跑更快)
想在data.table格式中,取出一些特別的資料
由於迴圈數很大,想縮短取出的時間
[軟體熟悉度]:
使用者(已經有用R 做過不少作品)
[問題敘述]:
在data.table格式的資料中,需要取出某行裡數字相同的整列
目前有試過一些寫法,不過時間都花蠻久的
有研究過data.table[] 中括號裡面的寫法,好像沒有辦法快速取出
(在看package裡面還有一個setkey指令,不曉得對快速取出有沒有幫助)
[程式範例]:
以下是我把我的問題簡化的例子
x<-structure(list(A = c(5, 3.5, 3.25, 4.25, 1.5), B = c(4.25, 4,
4, 4.5, 4.5), C = c(4.5, 2.5, 4, 2.25, 3)), .Names = c("A", "B",
"C"), class = "data.frame", row.names = c(NA, -5L))
x1<-as.data.table(x)
> x1
A B C
1: 5.00 4.25 4.50
2: 3.50 4.00 2.50
3: 3.25 4.00 4.00
4: 4.25 4.50 2.25
5: 1.50 4.50 3.00
第一種我使用
> subset(x1,B==4)
A B C
1: 3.50 4 2.5
2: 3.25 4 4.0
第二種是
> x1[c(x1[,2,with=F]==4)]
A B C
1: 3.50 4 2.5
2: 3.25 4 4.0
這兩種都能達到我要的結果,但是時間卻花很久
我完整的code是
for(i in 1:nrow(a)){
b_1=unique(subset(x,V2==a[i])[,4:5,with=F])
b_2=unique(x[c(x[,2,with=F]==a[i])][,4:5,with=F])
b_3=unique(x[a[i]][,4:5,with=F])
}
nrow(a)大約都是幾萬的數字
x是要取出的資料
a[i]則是在每個迴圈在第二行要取出符合的條件
b_1和b_2是我自己寫的結果對了但是時間要花很久
b_3是之前試網路上的寫法速度很快但是結果卻是錯誤的
不曉得依照b_3這種類似的寫法
能不能寫出取出符合條件的列?
[關鍵字]:
data.table 快速 取出
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.152.111
※ 文章網址: http://www.ptt.cc/bbs/R_Language/M.1396538938.A.AED.html
※ 編輯: tokyo291 (140.116.152.111), 04/03/2014 23:48:46
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 4 篇):
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章