R数据框 - 将字母转换为数字。

时间:2017-05-31 12:40:58

标签: r optimization dataframe

我有一个带有+200,000行的数据框,并将字母转换为其中一列中的数字(总共18列)。

Extract是我的df,有问题的列是Route_IATA。我的代码是

extract$Route_IATA <- lapply
(extract$Route_IATA, function(x) gsubfn('(.)', as.list(v1), toupper(as.character(x))))

system.time返回 143秒,不仅速度慢,而且添加更多记录会变得更糟。我的问题是:R中还有其他选择可以加快这个过程吗?

1 个答案:

答案 0 :(得分:1)

您正在对所有值(var data=[ 0.003098344217418779, 0.003050455340422816, 0.003003483230367491, 0.0029574879000276526, 0.002912526785452867, 0.0028686546791307594, 0.0028259236703412974, 0.0027843830926729696, 0.002744079478649364, 0.0027050565213931053, 0.0026673550432336377, 0.0026310129711459274, 0.002596065318888872, 0.00256254417569515, 0.00253047870134838, 0.0024998951274688534, 0.002470816764815812, 0.0024432640164022018, 0.0024172543962071363, 0.002392802553261877, 0.0023699203008770396, 0.002348616650771901, 0.0023288978518611132, 0.002310767433449818, 0.0022942262525850153, 0.0022792725453091183, 0.0022659019815607726, 0.0022541077234683004, 0.0022438804867823898, 0.0022352086051969397, 0.0022280780973101154, 0.002222472735981723, 0.0022183741198478295, 0.002215761746759102, 0.0022146130889155774, 0.0022149036694773536, 0.002216607140438076, 0.0022196953615558597, 0.0022241384801445128, 0.002229905011536446, 0.0022369619200374486, 0.0022452747002025143, 0.0022548074582710172, 0.0022655229936087897, 0.0022773828800138536, 0.0022903475467518186, 0.0023043763591960504, 0.002319427698956744, 0.0023354590433918533, 0.0023524270444014645, 0.002370287606415529, 0.0023889959634929995, 0.0024085067554581213, 0.0024287741030070823, 0.002449751681725264, 0.002471392794961985, 0.0024936504455158976, 0.002516477406090043, 0.002539826288480973, 0.002563649611471339, 0.002587899867399917, 0.0026125295873871248, 0.002637491405197819, 0.002662738119726399, 0.002688222756092124, 0.0027138986253349927, 0.002739719382704612, 0.002765639084536167, 0.002791612243708974, 0.0028175938836840714, 0.002843539591118028, 0.0028694055670505344, 0.002895148676663491, 0.0029207264976091863, 0.0029460973669048316, 0.002971220426390201, 0.0029960556667444293, 0.003020563970057162, 0.003044707150948344, 0.003068447996229814, 0.0030917503031008234, 0.003114578915868368, 0.0031368997611820855, 0.0031586798817722526, 0.003179887468678261, 0.0032004918919538382, 0.0032204637298342063, 0.003239774796349395, 0.003258398167367057, 0.0032763082050473505, 0.0032934805806918124, 0.0033098922959676476, 0.0033255217024885098, 0.003340348519732665, 0.003354353851279369, 0.003367520199344506, 0.0033798314775968052, 0.0033912730222365245, 0.003401831601319151, 0.0034114954223075965, 0.0034202541378374213, 0.003428098849680906, 0.003435022110897216, 0.003441017926157568, 0.003446081750236053, 0.0034502104846587996, 0.0034534024725062333, 0.003455657491365507, 0.0034569767444325604, 0.0034573628497658504, 0.0034568198276964343, 0.0034553530864018973, 0.003452969405654467, 0.0034496769187566563, 0.003445485092680776, 0.0034404047064317865, 0.0034344478276560875, 0.003427627787522027, 0.0034199591539011277, 0.0034114577028821827, 0.0034021403886536497, 0.0033920253117928983, 0.0033811316860040165, 0.0033694798033490304, 0.0033570909980203943, 0.003343987608705605, 0.0033301929395977096, 0.0033157312201082543, 0.0033006275633419685, 0.003284907923395031, 0.003268599051541288, 0.0032517284513731044, 0.0032343243329657624, 0.0032164155661363798, 0.0031980316328702376, 0.003179202578989168, 0.0031599589651382493, 0.0031403318171684814, 0.003120352575994384, 0.0031000530470065486, 0.003079465349120054, 0.003058621863540451, 0.0030375551823295047, 0.0030162980568533117, 0.00299488334619558, 0.0029733439656188855, 0.0029517128351565537, 0.002930022828417493, 0.002908306721685796, 0.002886597143396242, 0.002864926524066018, 0.0028433270467619477, 0.0028218305981813872, 0.002800468720423617, 0.0027792725635271114, 0.002758272838846489, 0.0027374997733411815, 0.0027169830648460214, 0.002696751838391975, 0.00267683460364311, 0.002657259213513734, 0.002638052824027268, 0.0026192418554760646, 0.002600851954938856, 0.002582907960209931, 0.0025654338651915354, 0.0025484527867981996, 0.002531986933418974, 0.0025160575749806876, 0.002500685014652473, 0.0024858885622288628, 0.0024716865092258185, 0.0024580961057210572, 0.002445133538967037, 0.0024328139138019176, 0.002421151234880811, 0.00241015839074656, 0.0023998471397562626, 0.0023902280978767175, 0.0023813107283589393, 0.0023731033332988856, 0.002365613047088544, 0.002358845831758557, 0.0023528064742106367, 0.002347498585335074, 0.002342924601005835, 0.002339085784942825, 0.002335982233428177, 0.0023336128818606094, 0.002331975513129236, 0.002331066767785519, 0.002330882155989485, 0.0023314160712037393, 0.0023326618056063353, 0.002334611567191121, 0.0023372564985217796, 0.002340586697103494, 0.002344591237333877, 0.0023492581939926435, 0.002354574667227345, 0.0023605268089904492, 0.002367099850881042, 0.0023742781333424947, 0.002382045136165614, 0.0023903835102449702, 0.002399275110534428, 0.0024087010301462298, 0.0024186416355364625, 0.0024290766027182027, 0.002439984954442278, 0.002451345098284227, 0.00246313486557478, 0.0024753315511100568, 0.0024879119535765443, 0.002500852416624961, 0.0025141288705261603, 0.0025277168743414375, 0.002541591658538823, 0.0025557281679863338, 0.0025701011052525684, 0.002584684974144581, 0.002599454123412588, 0.002614382790550791, 0.0026294451456234137, 0.002644615335044987, 0.0026598675252438963, 0.0026751759461383744, 0.002690514934354304, 0.002705858976114543, 0.0027211827497298914, 0.002736461167622379, 0.002751669417812187, 0.0027667830048002267, 0.0027817777897793114, 0.002796630030107783, 0.0028113164179805164, 0.002825814118233428, 0.00284010080521889, 0.002854154698690827, 0.0028679545986397973, 0.0028814799190199506, 0.0028947107203114546, 0.00290762774086383, 0.0029202124269675053, 0.002932446961602952, 0.002944314291818867, 0.0029557981546930673, 0.002966883101832087, 0.002977554522367839, 0.002987798664412222, 0.002997602654933067, 0.003006954518017523, 0.0030158431914916765, 0.0030242585418679894, 0.0030321913775950343, 0.0030396334605869157, 0.003046577516012762, 0.003053017240329711, 0.0030589473075459165, 0.0030643633737032225, 0.0030692620795723297, 0.003073641051556485, 0.003077498900802953, 0.0030808352205247648, 0.003083650581538514, 0.0030859465260272313, 0.003087725559540625, 0.003088991141248241, 0.0030897476724643484, 0.00309000048346656, 0.0030897558186334093, 0.0030890208199292534, 0.0030878035087680074, 0.003086112766290274, 0.00308395831209144, 0.0030813506814412993, 0.003078301201038607, 0.00307482196334681, 0.003070925799559912, 0.003066626251250093, 0.00306193754075122, 0.003056874540334877, 0.003051452740237845, 0.003045688215602231, 0.00303959759239154, 0.0030331980123479863, 0.0030265070970582294, 0.003019542911196428, 0.003012323925015147, 0.0030048689761561016, 0.0029971972308540547, 0.0029893281446083807, 0.002981281422397817, 0.002973076978514842, 0.0029647348960968405, 0.002956275386431778, 0.0029477187481165715, 0.002939085326146572, 0.0029303954710147113, 0.002921669497898812, 0.0029129276460153493, 0.002904190038217599, 0.0028954766409155924, 0.0028868072243946174, 0.0028782013236081806, 0.0028696781995203703, 0.002861256801071437, 0.002852955727839109, 0.002844793193466776, 0.002836786989928071, 0.002828954452695733, 0.002821312426880729, 0.0028138772344057246, 0.002806664642274854, 0.00279968983199953, 0.0027929673702377484, 0.0027865111807018478, 0.00278033451738718, 0.002774449939171493, 0.002768869285832072, 0.002763603655524879, 0.0027586633837670127, 0.002754058023960808, 0.002749796329494864, 0.0027458862374541517, 0.0027423348539681665, 0.0027391484412228953, 0.0027363324061590636, 0.002733891290875829, 0.002731828764755773, 0.0027301476183236462, 0.002728849758847971, 0.00272793620769123, 0.002727407099410938, 0.0027272616826105743, 0.002727498322535928, 0.0027281145054090968, 0.0027291068444890263, 0.0027304710878442023, 0.002732202127819842, 0.002734294012178718, 0.0027367399568915935, 0.0027395323605501525, 0.0027426628203722336, 0.002746122149766255, 0.0027499003974187815, 0.002753986867866372, 0.0027583701435101478, 0.0027630381080288226, 0.0027679779711434383, 0.002773176294684579, 0.002778619019910483, 0.002784291496022268, 0.0027901785098203213, 0.002796264316443916, 0.002802532671134241, 0.002808966861959218, 0.0028155497434368794, 0.0028222637709925343, 0.0028290910361835793, 0.002836013302624529, 0.0028430120425437526, 0.0028500684739023764, 0.0028571635980049795, 0.002864278237530985, 0.002871393074915066, 0.0028784886910044397, 0.002885545603920618, 0.0028925443080530153, 0.0028994653131117565, 0.0029062891831671696, 0.0029129965756036326, 0.0029195682799158466, 0.002925985256276088, 0.002932228673801621, 0.0029382799484521994, 0.002944120780488481, 0.0029497331914231507, 0.002955099560397684, 0.0029602026599189115, 0.0029650256908908827, 0.0029695523168789956, 0.0029737666975448956, 0.0029776535211923335, 0.002981198036365907, 0.0029843860824464697, 0.0029872041191889393, 0.002989639255150236, 0.0029916792749572103, 0.0029933126653665797, 0.0029945286400711517, 0.0029953171632089125, 0.0029956689715339505, 0.002995575595210588, 0.0029950293771946112, 0.002994023491167968, 0.0029925519579959074, 0.0029906096606781203, 0.002988192357768058, 0.002985296695237306, 0.002981920216764506, 0.0029780613724310853, 0.002973719525808685, 0.002968894959425955, 0.0029635888786050577, 0.0029578034136609455, 0.0029515416204591817, 0.0029448074793307793, 0.002937605892345186, 0.002929942678945225, 0.002921824569950435, 0.0029132591999378415, 0.0029042550980118067, 0.0028948216769771173, 0.0028849692209320034, 0.002874708871300228, 0.002864052611323842, 0.002853013249040555, 0.002841604398772023, 0.0028298404611516235, 0.0028177366017225363, 0.002805308728139106, 0.002792573466006604, 0.002779548133396539, 0.0027662507140767093, 0.0027526998294970825, 0.0027389147095745136, 0.002724915162321083, 0.0027107215423626315, 0.0026963547183957047, 0.0026818360396327757, 0.0026671873012871486, 0.002652430709150415, 0.002637588843316774, 0.002622684621109847, 0.0026077412592688956, 0.002592782235452561, 0.0025778312491193645, 0.002562912181845268, 0.002548049057139587, 0.0025332659998214503, 0.002518587195019855, 0.002504036846861113, 0.0024896391369082023, 0.0024754181824171275, 0.0024613979944759466, 0.0024476024360925983, 0.002434055180298022, 0.002420779668331397, 0.002407799067974553, 0.0023951362321027415, 0.002382813657519039, 0.002370853444139644, 0.0023592772545972113, 0.002348106274329219, 0.0023373611722180615, 0.002327062061849238, 0.0023172284634535457, 0.002307879266598657, 0.0022990326936948445, 0.002290706264378887, 0.0022829167608393874, 0.002275680194145832, 0.0022690117716426894, 0.002262925865468783, 0.002257435982260932, 0.0022525547340995697, 0.002248293810752641, 0.0022446639532725542, 0.0022416749289993695, 0.0022393355080216645, 0.002237653441144706, 0.0022366354394136086, 0.002236287155237142, 0.0022366131651556775, 0.002237616954294524, 0.0022393009025415615, 0.00224166627248557, 0.0022447131991491388, 0.0022484406815473272, 0.0022528465761005095, 0.0022579275919269288, 0.002263679288037568, 0.0022700960724528377, 0.0022771712032574644, 0.002284896791606713, 0.002293263806693765, 0.0023022620826846653, 0.0023118803276238145, 0.0023221061343093935, 0.002332925993134573, 0.0023443253068866523, 0.0023562884074926045, 0.00236879857469575, 0.002381838056644492, 0.002395388092370261, 0.0024094289361279828, 0.002423939883568537, 0.002438899299708875, 0.0024542846486615933, 0.0024700725250819903, 0.002486238687286821, 0.0025027580919952503, 0.0025196049306387743, 0.0025367526671832784, 0.0025541740774027858, 0.0025718412895410084, 0.0025897258262933725, 0.002607798648038891, 0.0026260301972480995, 0.002644390443990151, 0.0026628489324592814, 0.0026813748284380116, 0.002699936967611842, 0.0027185039046477254, 0.0027370439629462416, 0.0027555252849753432, 0.002773915883091539, 0.002792183690752697, 0.002810296614025081, 0.002828222583285942, 0.0028459296050218656, 0.0028633858136222477, 0.0028805595230665944, 0.0028974192784039805, 0.002913933906922825, 0.002930072568909263, 0.0029458048078927182, 0.0029611006002778746, 0.002975930404263128, 0.002990265207946673, 0.0030040765765227523, 0.003017336698472204, 0.0030300184306533287, 0.0030420953422011705, 0.0030535417571457037, 0.0030643327956619924, 0.003074444413868231, 0.003083853442090627, 0.003092537621517395, 0.003100475639167593, 0.0031076471611042726, 0.003114032863825285, 0.0031196144637691916, 0.0031243747448779766, 0.003128297584162696, 0.003131367975222744, 0.0031335720496741943, 0.003134897096447437, 0.0031353315789193503, 0.0031348651498502634, 0.0031334886641011007, 0.003131194189111326, 0.0031279750131235212, 0.0031238256511457534, 0.0031187418486481977, 0.0031127205829957734, 0.0031057600626239047, 0.0030978597239697484, 0.0030890202261765207, 0.0030792434435936975, 0.003068532456100999, 0.003056891537289069, 0.0030443261405346997, 0.0030308428830132287, 0.0030164495276954113, 0.0030011549633805995, 0.0029849691828223992, 0.002967903259007178, 0.00294996931964981, 0.002931180519974819, 0.002911551013854725, 0.0028910959233807427, 0.0028698313069441712, 0.00284777412590973, 0.002824942209964758, 0.0028013542212306725, 0.002777029617225223, 0.0027519886127660097, 0.0027262521409074252, 0.0026998418130045115, 0.0026727798779984163, 0.002645089181018924, 0.002616793121400189, 0.002587915610206046, 0.002558481027361389, 0.0025285141784858367, 0.0024980402515254797, 0.0024670847732777275, 0.002435673565903302, 0.002403832703518221, 0.0023715884689570928, 0.002338967310797382, 0.002305995800732357, 0.0022727005913783047, 0.0022391083745992336, 0.0022052458404297546, 0.0021711396366740983, 0.0021368163292563268, 0.002102302363393732, 0.0020676240256622055, 0.0020328074070189955, 0.0019978783668448143, 0.0019628624980636495, 0.0019277850933949448, 0.0018926711127890533, 0.0018575451520929953, 0.001822431412989666, 0.001787353674249656, 0.0017523352643308858, 0.001717399035357215, 0.0016825673385031936, 0.0016478620008080916, 0.0016133043034383533, 0.0015789149614136584, 0.0015447141048078367, 0.001510721261432017, 0.0014769553410035846, 0.0014434346208007703, 0.0014101767327990575, 0.0013771986522820333, 0.001344516687915844, 0.001312146473273079, 0.0012801029597886862, 0.0012484004111274084, 0.001217052398939277, 0.0011860717999768674, 0.001155470794545331, 0.0011252608662536982, 0.0010954528030335544, 0.0010660566993889698, 0.0010370819598395072, 0.0010085373035162175, 0.0009804307698688059, 0.0009527697254405704, 0.0009255608716663081, 0.000898810253647143, 0.000872523269855144, 0.0008467046827196909, 0.0008213586300467857, 0.0007964886372219154, 0.0007720976301466246, 0.0007481879488586713, 0.0007247613617855031, 0.0007018190805807927, 0.0006793617754939159, 0.0006573895912225442, 0.0006359021631989311, 0.0006148986342610066, 0.000594377671660056, 0.0005743374843575293, 0.0005547758405643951, 0.0005356900854774439, 0.0005170771591680111, 0.0004989336145797466, 0.0004812556355933119, 0.0004640390551171868, 0.00044727937316516454, 0.00043097177488255064, 0.0004151111484845867, 0.0003996921030721595, 0.0003847089862914561, 0.0003701559018058338, 0.0003560267265498415, 0.0003423151277369866, 0.00032901457959454215, 0.0003161183798003851, 0.00030361966559855867, 0.0002915114295719546, 0.00027978653505221257, 0.0002684377311486095, 0.00025745766737939025, 0.00024683890789063006, 0.00023657394524934618, 0.00022665521379916888, 0.0002170751025684402, 0.00020782596772213146, 0.00019890014455045983, 0.00019028995898851496, 0.00018198773866261384, 0.0001739858234604366, 0.00016627657562330424, 0.00015885238936019796, 0.00015170569998431124, 0.00014482899257406735, 0.00013821481016160816, 0.00013185576145279, 0.00012574452808368454, 0.00011987387141949035, 0.00011423663890261295, 0.00010882576995745931, 0.00010363430146022826, 0.00009865537278265362, 0.0000938822304192749, 0.00008930823220837494, 0.00008492685115722855, 0.00008073167888276199, 0.00007671642867912283, 0.0000728749382240056, 0.00006920117193588204, 0.00006568922299452901, 0.00006233331503745405, 0.000059127803544973336, 0.00005606717692681184, 0.00005314605732316719, 0.00005035920113321183, 0.00004770149928400165, 0.00004516797725271938, 0.00004275379485510474, 0.000040454245812817735, 0.00003826475711234397, 0.00003618088816788652, 0.000034198329800499275, 0.000032312903045501934, 0.00003052055779998092, 0.000028817371321925253, 0.000027199546592272164, 0.000025663410550846423, 0.0000242054122168745, 0.000022822120704435795, 0.000021510223142886566, 0.0000202665225119536, 0.000019087935400850824, 0.000017971489700419525, 0.00001691432223693785, 0.000015913676355885315, 0.00001496689946358681, 0.000014071440534298036, 0.000013224847589933063, 0.00001242476515927355, 0.000011668931723141874, 0.00001095517715166556, 0.000010281420139410831, 0.000009645665643817674, 0.000009046002332030452, 0.000008480600040885558, 0.000007947707254492636, 0.000007445648603528832, 0.000006972822390056683, 0.0000065276981413762005, 0.000006108814196130724, 0.0000057147753256048544, 0.000005344250392881082, 0.000004995970052259864, 0.00000466872449109659, 0.000004361361215967564, 0.000004072782884846042, 0.000003801945186749203, 0.0000035478547701065, 0.0000033095672209003674, 0.0000030861850914407824, 0.000002876855980455913, 0.0000026807706650120995, 0.0000024971612846172263, 0.000002325299577712047, 0.000002164495170614263, 0.000002014093918849715, 0.0000018734763006834577, 0.0000017420558625511952, 0.0000016192777159874831, 0.0000015046170855515019, 0.0000013975779071637363, 0.0000012976914761869784, 0.0000012045151445127484, 0.0000011176310658490104, 0.000001036644988346693, 9.611850936506414e-7, 8.909008814150599e-7, 8.254620982837993e-7, 7.645577103017318e-7, 7.078949176947379e-7, 6.551982109320449e-7, 6.062084669656222e-7, 5.606820845267709e-7, 5.183901573495406e-7, 4.791176841840743e-7, 4.4266281445997517e-7, 4.0883612846017943e-7, 3.7745995086925334e-7, 3.4836769656637604e-7, 3.214032475421487e-7, 2.964203598296991e-7, 2.7328209935401775e-7, 2.5186030561888767e-7, 2.3203508216795955e-7, 2.13694312775296e-7, 1.9673320234085994e-7, 1.8105384148778802e-7, 1.6656479388074467e-7, 1.5318070530797074e-7, 1.4082193359376209e-7, 1.294141984328421e-7, 1.1888825026331956e-7, 1.091795573205541e-7, 1.0022801004014188e-7, 9.197764200429834e-8, 8.43763666520672e-8, 7.73757289999229e-8, 7.093067164538312e-8, 6.499931435214384e-8, 5.954274654091494e-8, 5.452483203551138e-8 ] var svg=d3.select("svg"); // line_x={"20":"red","50":"green"} var margin={top:100,bottom:50,left:100,right:0}, width = +svg.attr("width") - margin.left - margin.right, height = +svg.attr("height") - margin.top - margin.bottom, g = svg.append("g").attr("transform", "translate(" + margin.left + "," + margin.top + ")"); x_extent=d3.extent(data,function(d,i){return i}) y_extent=d3.extent(data,function(d,i){return d}) var x= d3.scale.linear() .range([0,width]) .domain(x_extent) var y=d3.scale.linear() .range([height,0]) .domain(y_extent) var xAxis = d3.svg.axis().scale(x) .orient("bottom"); var yAxis = d3.svg.axis().scale(y) .orient("left"); // var vertical_line=d3.svg.line() // .x(function(d){return d.x}) // .y(function(d){return d.y}) var line=d3.svg.line() .x(function(d,i){ return x(i)}) .y(function(d,i){return y(d)}) var lg = svg.append("defs").append("linearGradient") .attr("id", "mygrad")//id of the gradient .attr("x1", "0%") .attr("x2", "100%") // .attr("x3","50%") // .attr("x4","75%") .attr("y1", "0%") .attr("y2", "0%")//since its a vertical linear gradient ; lg.append("stop") .attr("offset", "0%") .style("stop-color", "red")//end in red .style("stop-opacity", 1) lg.append("stop") .attr("offset", "25%") .style("stop-color", "white")//start in blue .style("stop-opacity", 1) // .style("stroke-dasharray", ("3, 3")) lg.append("stop") .attr("offset", "75%") .style("stop-color", "white")//start in blue .style("stop-opacity", 1) .style("stroke-dasharray", ("2, 10")) lg.append("stop") .attr("offset", "100%") .style("stop-color", "red")//start in blue .style("stop-opacity", 1) g.append("path") .attr("class","line") .datum(data) .attr("d",line) .style('stroke', 'blue') // .style("fill", "url(#mygrad)") // var lowerLimit = d3.quantile(data, 0.18, function(d) { // return d.x // }); // // svg.append('line') // .attr('x1', x(lowerLimit)+margin.left) // .attr('y1', height-margin.top) // .attr('x2', margin.left+x(lowerLimit)) // .attr('y2', height+margin.top) // .style('stroke', 'brown') // // svg.append("g") .attr("class", "x axis") .attr("transform", "translate("+margin.left+"," + (height+margin.top) + ")") .call(xAxis); // Add the Y Axis svg.append("g") .attr("class", "y axis") .attr("transform", "translate("+margin.left+ ","+margin.top+")") .call(yAxis); )进行循环,这里不需要。这是需要这么长时间的原因。

参数lapply可以是函数x中的向量。所以这应该快得多。我还没有测试过。

gsubfn