作者phil5566 (5566)
看板R_Language
标题[问题] 如何更有效率的整理data的问题?
时间Tue Jan 31 04:15:38 2017
[问题类型]:
效能谘询(我想让R 跑更快)
[软体熟悉度]:
新手(没写过程式,R 是我的第一次)
[问题叙述]:
小弟自己产生一组data叫做"T"的矩阵,
想把其中"T"的第5行(T[,5])和第6行(T[,6])的数据,
挑出来整理成一个120X3的矩阵,假设叫"G",
T[,5]的数值有10,16,22,28,34,40,6个可能,
T[,6]的数值有0.5,1.5,2.5,.........,19.5和inf的可能,
整理方法:
G的第一行(G[,1]):放0.5,1.5,....,19.5(20个数,6个循环,共120个)
G的第二行(G[,2]):放的东西比较麻烦,即
T[,5]=10的情况下,对应到T[,6]那些0.5,1.5,.....,19.5,inf的数值
计算他们的累积比率,假设T[,5]=10,有100笔data,
T[,5]=10且T[,6]<=0.5(或者T[,6]<=1)有22笔,
则它算出的累积比率为22/100=0.22,依此类推...,
算到T[,5]=10且T[,6]<=19.5(或者T[,6]<=20)的累积比率
共20个数字放到G[1:20,2],重复以上模式处理T[,5]=16,22,28,34,40的情形
分别放到G[21:40,2],G[61:80,2],.....,G[101:120,2]
G的第三行(G[,3]):G[1:20,3]放10,G[21:40,3]放16,......G[101:120,3]放40
________________________________________________________________________
小弟之前是用table函数处理,
直接table(T[,5],T[,6])得到分类结果
再分别计算累积比率,没用到廻圈,
但考虑到"假设T[,6]可能没有出现5.5的情况",
table函数分类後就不会有5.5的这个分类,
所以小弟又重新写,用两个廻圈来整理data,
第一个廻圈是在处理G[,1]和G[,3],第二个廻圈在处理G[,2]
以下附上code范例,
想请教版上各位高手,大大有没有更漂亮,快速的处理方法,
指教了,谢谢~
[程式范例]:
http://pastebin.com/bw0C2YNJ
[环境叙述]:
R x64 3.3.1
[关键字]:
data整理
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.224.18.96
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1485807341.A.A33.html