作者cawaiilulu (across)
看板Statistics
標題[問題] R的order排序問題
時間Thu Mar 8 01:46:01 2012
sub.id<-sample(1:nrow, 2000, replace = F) #sample the 2000 obs
data.sub<-data[sub.id, ] #sample data for 1 trial
data.bp<-data.sub[order(Prob,decreasing=T), ] #data sorted by Prob
我要從5000個row資料中每次抽兩千筆出來 針對probability這個變項作排序
可是奇怪的是 我抽出來的資料會有一堆NA出現 (類似這樣)
NA.199 NA NA NA NA NA
12475 -4.66 0.009454164 0.00936562 93.6562 -0.6838
NA.200 NA NA NA NA NA
2175 -4.25 0.014252257 0.01405198 140.5198 -0.6838
NA.201 NA NA NA NA NA
NA.202 NA NA NA NA NA
NA.203 NA NA NA NA NA
NA.204 NA NA NA NA NA
14477 -4.28 0.013873427 0.01368359 136.8359 -0.6838
NA.205 NA NA NA NA NA
8018 -4.75 0.008619226 0.00854557 85.4557 -1.0257
NA.206 NA NA NA NA NA
NA.207 NA NA NA NA NA
NA.208 NA NA NA NA NA
NA.209 NA NA NA NA NA
23731 -3.82 0.021953140 0.02148155 214.8155 -1.0257
17100 -4.45 0.011644839 0.01151080 115.1080 -0.6838
3393 -4.47 0.011493657 0.01136305 113.6305 -1.0257
14704 -4.12 0.016279315 0.01601854 160.1854 -0.6838
NA.210 NA NA NA NA NA
NA.211 NA NA NA NA NA
是我哪裡寫法有問題嗎? 仔細看一下 ID那一欄的NA.XXX 是有順序的
當我的dim(data.sub) 是2000*5的時候 但是我的dim(data.bp)卻又回到5000*5
這就算了 連我的profit也並無照順序排的跡象(最後一欄)
來自問自答 我發現那是因為data.sub還會留著data1 row names的記憶
所以我把data.sub寫出到csv檔再寫回給個新名字就可以了
可是有沒有要這麼麻煩啊 囧
1.因為這件事情我要做個幾百次 (就是從5000抽兩千排序 我要抽出幾百個subsets並排序)
有沒有比較經濟的方法可以完成我要的事情又不受老data ID位置干擾?
2.作完這些事情的目的是 我要偵測當累加的profit極大化的那一個"點"
應該是偵測profit欄的第一個負值吧 有甚麼function可以做這件事情呢? 謝謝
Prob X10Tprob profit
3073 0.9999995 9999.995 267.85124
4846 0.9999992 9999.992 76.58030
9581 0.9999992 9999.992 188.15078
2303 0.9999820 9999.820 94.63126
1240 0.9999752 9999.752 192.13014
2453 0.9999639 9999.639 52.52978
7586 0.9999638 9999.638 48.34578
3710 0.9999611 9999.611 89.11428
2435 0.9999607 9999.607 45.28078
另外徵求R的loop教學 寫得比較好懂的網頁 我每次只要需要用到i就會掛 感恩~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 174.101.220.112
1F:→ clickhere:第三行就錯了. sort by profit....Prob是啥? 03/08 09:23
拍謝 我是文字部分打錯 我是要sort by Prob 然後之後再cumsum on profit
2F:→ clickhere:length(Prob) == 2000 ? 03/08 12:11
Yes!!
3F:→ clickhere:sum(is.na(data.sub)) = ? 03/08 12:11
應該是說我要怎麼把第一個data frame中 只要有含NA的ID整row都刪掉呢?
dim(data.sub)[1]=2000 dim(data.bp)=5000
sum(is.na(data.sub))=0 (?)
※ 編輯: cawaiilulu 來自: 174.101.220.112 (03/08 12:51)
4F:→ clickhere:sum(is.na(data.sub))==0就沒有NA了,那你print出來的是? 03/09 01:32
5F:→ clickhere:data.new<-data[rowSums(is.na(data))>0,] 03/09 01:34