作者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