仅考虑r中交易日期之前的最后6个月,如何计算每个帐户的网络测量?

如何解决仅考虑r中交易日期之前的最后6个月,如何计算每个帐户的网络测量?

这是我的交易数据:

data:

id          from    to          date        amount  
<int>       <fctr>  <fctr>      <date>      <dbl>
19521       6644    6934        2005-01-01  700.0
19524       6753    8456        2005-01-01  600.0
19523       9242    9333        2005-01-01  1000.0
…           …       …           …           …
1056317     7819    7454        2010-12-31  60.2
1056318     6164    7497        2010-12-31  107.5
1056319     7533    7492        2010-12-31  164.1

以前,我问过this question,我需要在指定的时间间隔内形成网络,然后在网络上执行网络测量。 现在,我需要进一步说明。
我想做的如下:

  • 例如,让我们考虑row 1。在row 1中,交易日期为"2005-01-01",因此我们需要提取date_trx位于"2004-07-05"-"2005-01-01"中的数据(这是日期{{1 }}),然后在提取的数据上形成网络,以计算网络的度量,例如网络中帐户的度中心性,中间性中心性。最后,新列"2005-01-01"degree_centrality的第一行将分别包含帐户betweenness_centrality的度中心和帐户6644的中间度。
  • 类似地,在6644中,交易日期再次为row 2,因此我们需要提取"2005-01-01"位于date_trx中的数据(这是之前的最后6个月的时间段)到日期"2004-07-05"-"2005-01-01"),然后在提取的数据上形成网络,以计算网络的指标,例如网络中帐户的度中心度,中间度。最后,新列"2005-01-01"degree_centrality的第二行将分别包含帐户betweenness_centrality的度中心和帐户6753的中间度。
  • 数据的所有行都是这样。

PS:

  • 让我们考虑一下6753row 1row 2。由于日期相同,因此由日期在row 3范围内的数据创建的网络将对所有三行完全相同。但是,由于将根据"2004-07-05"-"2005-01-01"列中的帐户将degree centr.betweenness centr.之类的网络度量添加到数据中,因此这些from,{{1} }和6644很有可能会彼此不同。
  • 此外,当我们提取日期范围之间的数据以形成网络时,还要考虑日期间隔的边界。例如,我数据中的第一个日期是6753(实际上该日期有4笔交易)。但是,假设在第一个日期9242仅有一个观察(交易),并且在此日期之前没有任何观察,现在我们要创建一个介于"2005-01-01"之间的数据网络。由于正如我所说的,边界也很重要,因此,在指定的日期范围内,形成网络的唯一观察结果是日期为"2005-01-01"的观察结果。因此,由于交易由两个帐户组成,因此网络中将仅存在这两个帐户(节点)。因此,归根结底,一个观察就足以建立一个网络并在其上计算网络指标。
数据样本的

dput()输出:

"2004-07-05"-"2005-01-01"

编辑:
根据@pseudospin的解决方案,以下代码:

"2005-01-01"

使用上面提供的数据进行应用时,将返回以下输出:

structure(list(id = c(18529L,13742L,9913L,956L,2557L,1602L,18669L,35900L,48667L,51341L,53713L,60126L,60545L,65113L,66783L,83324L,87614L,88898L,89874L,94765L,100277L,101587L,103444L,108414L,113319L,121516L,126607L,130170L,131771L,135002L,149431L,157403L,157645L,158831L,162597L,162680L,163901L,165044L,167082L,168562L,168940L,172578L,173031L,173267L,177507L,179167L,182612L,183499L,188171L,189625L,193940L,198764L,199342L,200134L,203328L,203763L,204733L,205651L,209672L,210242L,210979L,214532L,214741L,215738L,216709L,220828L,222140L,222905L,226133L,226527L,227160L,228193L,231782L,232454L,233774L,237836L,237837L,238860L,240223L,245032L,246673L,247561L,251611L,251696L,252663L,254410L,255126L,255230L,258484L,258485L,259309L,259910L,260542L,262091L,264462L,264887L,264888L,266125L,268574L,272959L,273519L,274064L,274276L,275121L,277368L,279699L,280009L,280771L,283004L,285434L,286555L,287519L,287672L,292464L,292967L,293761L,298688L,299828L,301001L,305967L,306733L,307195L,307690L,312021L,312387L,313201L,313617L,314821L,319220L,319431L,319896L,319898L,320552L,321169L,321489L,323363L,326642L,327878L,329300L,329693L,334956L,336257L,337051L,337453L,341921L,342486L,343779L,345045L,346051L,350569L,351775L,351776L,351982L,352926L,357909L,359279L,360537L,360625L,360626L,360893L,366453L,367527L,369371L,372062L,372399L,374143L,375554L,376953L,383066L,383834L,388124L,390941L,391457L,392392L,393886L,394712L,400161L,400163L,400293L,400947L,408385L,408433L,408770L,409130L,409884L,409957L,411094L,411473L,417931L,417933L,423987L,426306L,427859L,427933L,429862L,437299L,437302L,439673L,440086L,442868L,445391L,447715L,449318L,452670L,453274L,458907L,462533L,463977L,463978L,465277L,466227L,466334L,468656L,468984L,469658L,470878L,471085L,475595L,479825L,480706L,482107L,482396L,484029L,487872L,489049L,489244L,491078L,492645L,494182L,494770L,499833L,501560L,503281L,506762L,507155L,510635L,510636L,511456L,518516L,520256L,522059L,523879L,526605L,531419L,541120L,542984L,543255L,544835L,552145L,552249L,552599L,556641L,558437L,560182L,560316L,561661L,562757L,564655L,566807L,568924L,569579L,572454L,575342L,583113L,584735L,586566L,588467L,588650L,590397L,593263L,596176L,596991L,598516L,600036L,600890L,601217L,605716L,608700L,608986L,610955L,611554L,612369L,612912L,614413L,614581L,615689L,617839L,621218L,625643L,631926L,632402L,632634L,632971L,633878L,634037L,635879L,635881L,641722L,644074L,644363L,647383L,648449L,648705L,651123L,653520L,653632L,655184L,657159L,659304L,659383L,664298L,667950L,670871L,671575L,674758L,679149L,681217L,683256L,686397L,690087L,692048L,693581L,698475L,702839L,703263L,705359L,707965L,708472L,709573L,711538L,717942L,724743L,728282L,728648L,729681L,731550L,733199L,733615L,735554L,736414L,738424L,738745L,740422L,741730L,742188L,744849L,749384L,752006L,752873L,755237L,757632L,759299L,759719L,761893L,763247L,766302L,773620L,773833L,774422L,776563L,778547L,779605L,779717L,781104L,785381L,787524L,796458L,798356L,799486L,800502L,801384L,801958L,802663L,806221L,809515L,810634L,811948L,811977L,814180L,814464L,817624L,818373L,823705L,825916L,827123L,828005L,830594L,835990L,836925L,837301L,842136L,848963L,849984L,851164L,853383L,856965L,857455L,862780L,868448L,869178L,871528L,872324L,873608L,874589L,876773L,877903L,879305L,884153L,888738L,888830L,889369L,890395L,891820L,894176L,901068L,902416L,904059L,904624L,906822L,916201L,926644L,927983L,929856L,930224L,931276L,932214L,932332L,934410L,934979L,935556L,937221L,937603L,941771L,944454L,946767L,950291L,950302L,951398L,953147L,953606L,955816L,957054L,957102L,957984L,967407L,973595L,974085L,978109L,979048L,979900L,981315L,983423L,985428L,985680L,986613L,992879L,997651L,999781L,1004742L,1006958L,1009140L,1009227L,1009644L,1013484L,1018535L,1019671L,1030067L,1030636L,1032335L,1033712L,1035096L,1036537L,1038682L,1042439L,1045492L,1050247L,1054737L,1056136L),from = c("5370","5370","8605","6390","8934","5635","6046","5680","8026","9037","7816","8046","5492","8756","9254","7078","6615","9817","8228","8822","5735","7058","8667","9315","6053","7990","8247","8165","5656","9261","5929","8251","6725","6004","7022","7442","8679","6491","5658","9296","8386","9535","7541","9621","7158","8240","8025","6989","7059","9121","5608","7551","9163","9362","6072","6169","7034","8313","7930","7151","8914","9277","6376","5939","6253","8629","6778","7783","7319","6644","9221","6820","6326","6495","7818","9788","6831","7986","5700","5679","7074","6125","6806","5841","7177","8369","7420","9686","5875","6196","7538","8761","9837","6214","7755","7824","8115","8941","8582","5583","5990","7497","8336","9847","7269","8479","6973","5870","9500","9406","6255","9135","7008","8197","5921","8951","8726","8384","9446","8435","7220","9427","7664","6996","8811","6455","6022","7827","7290","5409","6988","5698","5844","8754","9003","9024","8650","5924","7815","6876","8445","8524","6799","6951","7606","5950","9421","9301","9409","8810","8892","8843","6891","9869","7880","8346","7427","8308","6452","7104","7228","7694","6296","8624","5393","5982","8619","8494","6354","8954","8356","6342","5636","6195","7265","7504","9289","6814","6649","9706","7385","8110","6359","6557","6338","7937","9238","6511","9038","9646","5516","6020","7005","9824","7131","6629","7683","9720","9586","8984","5505","5789","7272","5907","9731","8359","7879","8048","9458","7931","7918","5983","6592","5765","5898","9558","9372","5936","9580","8458","9692","6290","5703","5747","6540","8600","6459","6768","7523","9177","8898","7257","6395","7168","7671","6158","5372","7983","8919","7614","8631","8342","7227","6700","7349","8210","5613"
),to = c("9356","5605","8567","8933","8483","7626","9676","9105","9772","6979","7564","8744","7318","8433","7122","8566","6728","9689","5614","5596","5953","7336","7247","7291","6282","7236","8866","8613","9247","6767","9273","7320","9533","8930","9343","9499","7693","7830","5392","8516","9023","7310","8939","9736","5585","7691","7332","9476","9239","6417","6016","7933","6929","7437","6672","9118","6640","7429","9149","7979","5716","9405","6433","8747","6675","6621","8237","6934","9361","7366","8699","9564","5373","8457","6650","7033","9807","6984","6269","6510","9001","6445","6874","8926","9188","5660","6061","8130","9570","6142","9272","8558","7020","8890","5684","8422","7715","6404","7182","9635","7395","9352","6450","5640","8654","6601","6029","9251","9809","7687","5417","6171","8927","9675","8547","8601","6474","9295","9699","7161","9359","8142","7801","8378","5460","9495","8673","8990","7061","9469","8067","7833","7064","8462","6096","6985","7698","5872","5894","9164","5554","5592","5565","6805","8188","8041","7622","8610","9157","8521","7297","5802","6610","6019","6422","7773","6673","7844","5786","7486","8512","7647","6112","6670","9836","9514","7172","8962","6249","9216","8584","7282","8202","8537","9829","8265","7361","8598","9051","9602","5926","5719","9278","8702","8958","5862","7666","6352","6251","5722","8564","8219","5473","6430","8813","5692","6612","8606","9652","7143","7007","7474","6555","9065","5623","6888","6909","5827","5852","6710","7836","5370"),date = structure(c(12934,13000,13038,13061,13099,13113,13117,13179,13238,13249,13268,13296,13299,13309,13314,13391,13400,13404,13409,13428,13452,13460,13482,13493,13518,13526,13537,13542,13544,13596,13616,13617,13626,13633,13639,13642,13646,13656,13660,13664,13667,13669,13677,13686,13694,13707,13716,13725,13738,13739,13746,13756,13761,13769,13770,13776,13786,13791,13799,13806,13813,13817,13822,13829,13830,13836,13847,13852,13860,13866,13871,13878,13882,13883,13887,13888,13889,13890,13891,13895,13896,13899,13905,13909,13910,13914,13918,13922,13923,13926,13938,13943,13951,13952,13956,13969,13974,13982,13983,13986,13989,13999,14004,14011,14012,14013,14016,14018,14030,14035,14036,14043,14046,14050,14052,14060,14065,14067,14073,14076,14077,14083,14091,14096,14097,14104,14106,14117,14122,14127,14135,14136,14152,14157,14158,14165,14166,14183,14188,14196,14213,14218,14226,14231,14232,14243,14244,14249,14254,14256,14257,14258,14259,14263,14264,14266,14267,14274,14275,14280,14285,14286,14288,14291,14299,14302,14303,14308,14312,14313,14316,14317,14334,14339,14342,14347,14364,14369,14377,14391,14395,14400,14402,14403,14406,14408,14425,14430,14433,14436,14437,14438,14440,14443,14445,14456,14458,14461,14463,14464,14466,14469,14484,14487,14492,14498,14500,14508,14513,14514,14517,14522,14527,14530,14537,14540,14548,14553,14556,14560,14561,14563,14578,14583,14584,14585,14586,14591,14607,14609,14611,14612,14614,14615,14616,14618,14620,14622,14624,14626,14628,14629,14631,14633,14637,14640,14645,14646,14648,14652,14653,14668,14670,14673,14676,14679,14680,14681,14685,14686,14699,14703,14704,14707,14711,14712,14727,14729,14734,14737,14738,14742,14760,14763,14765,14769,14773,14774,14777,14784,14790,14795,14803,14821,14824,14826,14828,14829,14830,14831,14834,14840,14850,14852,14856,14857,14865,14882,14887,14889,14890,14895,14910,14913,14918,14919,14922,14926,14927,14943,14946,14948,14949,14951,14954,14956,14967,14974,14974
),class = "Date"),amount = c(24.4,7618,21971,5245,2921,8000,169.2,71.5,14.6,4214,13920,24640,1600,261.1,16400,3500,2700,19882,182,16927,25653,3059,2880,9658,4500,12480,1000,3679,34430,12600,19.2,4900,826,2100,38000,79,11400,21495,200,100.6,5300,108.9,2696,7500,171.6,99.2,2452,3218,700,69.7,91.5,2900,17572,90.5,49752,1900,870,85.2,540,210,28400,720,180,420,44289,489,840,150,152.9,64.1,41464,205,2166,100,59.7,6588,65,65.7,15792,2000,2200,99.7,140.3,67.6,5600,873,660,36258,2002,263,63.3,1400,7680,360,65.5,344,990,19652,1080,72.8,22991,1140,9226,2400,1410,18300,75.7,1700,65.4,78.8,6846,270,6339,3000,358.3,102.3,73.2,3869,2800,72.4,228.2,3700,6900,350,59.2,23131,1200,630,1680,17100,390,2520,450,1920,137.9,55.4,5800,24977,570,11700,58.3,1347,1455,4600,3300,51.9,2038,49.6,9252,3294,1170,70.5,70.1,91.3,54.1,46181,15586,74529,189.5,318.1,55.2,6446,1500,6300,8600,300,6500,2600,185.2,11200,3041,2895,14037,3103,57.9,93,109.1,67.1,13200,7746,2300,2960,18292,136.9,2974,331,1300,14600,1100,10315,39864,94.1,101.2,1469,27132,4700,101.8,58.4,76,61.6,38200,600,400,2412,4485,1320,2500,810,1800,330,480,114,55.9,500,4356,7045,11889,146.1,288.5,56.3,3,7156,24784,24423,822,20800,2.2,63,1050,15976,4755,11100,166.6,59.9,5411,13405,183.9,35.4,10.8,66.7,2277,511,800,5040,93.5,75.4,14,4622,145,24324,1523,372,3100,77.9,77.1,14989,247.3,190.6,58.7,1398,4268,3597,63.1,12400,5106,4633,510,204.7,1275,6460,6406,78.7,52.6)),row.names = c(NA,-478L),class = "data.frame")

在这里,为什么帐户library(data.table) setDT(dt) measure_graph <- function(dt) { network <- graph_from_data_frame(dt[,.(from,to)],directed=TRUE) accounts <- dt[date == max(date),from] list( account = accounts,degree = degree(network,mode = "all")[accounts],in_degree = degree(network,mode = "in")[accounts],out_degree = degree(network,mode = "out")[accounts] ) } dt[,measure_graph(dt[(date >= end_date - 180) & (date <= end_date)]),.(end_date = date)] 没有end_date account degree in_degree out_degree <date> <fctr> <dbl> <dbl> <dbl> 2005-05-31 5370 1 0 1 2005-08-05 5370 2 0 2 2005-09-12 5370 3 0 3 2005-10-05 8605 NA NA NA 2005-11-12 5370 5 1 4 2005-11-26 6390 NA NA NA 2005-11-30 5370 6 2 4 2006-01-31 5370 7 2 5 2006-03-31 8934 NA NA NA 2006-04-11 5370 6 2 4 ... 8605,6390,8934却有NA?此外,有些值是正确的,但有些则不正确。例如,考虑帐户degree=1,in_degree=0的日期out_degree=1
按该日期和帐户过滤输出,得出:

"2010-12-11"

但是,当我在日期5370和帐户end_date account degree in_degree out_degree <date> <fctr> <dbl> <dbl> <dbl> 2010-12-11 5370 1 0 1 之前的最后6个月("2010-06-14"-"2010-12-11")中过滤上面提供的样本数据时,

"2010-12-11"

它给出:

5370

因此,据此,实际上data[(date <="2010-12-11" & date>=as.Date(as.numeric(as.Date("2010-12-11"))-180,origin="1970-01-01")) & (from==5370 | to==5370)] 应该具有id from to date amount <int> <fctr> <fctr> <date> <dbl> 890395 5939 5370 2010-06-14 65.0 891820 6592 5370 2010-06-17 5040.0 894176 5370 6352 2010-06-24 450.0 901068 5765 5370 2010-06-30 14.6 902416 5370 6251 2010-06-30 14.6 904059 5370 5722 2010-06-30 93.5 904624 5898 5370 2010-06-30 71.5 ... 1032335 6700 5370 2010-11-30 67.1 1033712 5370 5827 2010-12-03 4500.0 1035096 5370 5852 2010-12-05 2452.0 1036537 7078 5370 2010-12-06 5800.0 1038682 7349 5370 2010-12-08 1275.0 1042439 5370 6710 2010-12-11 6460.0 (63 rows in total) ,如果我们仅按5370进行过滤,我们会看到它应该具有degree=63,如果我们仅按to==5370进行过滤,我们将看到它在指定的日期范围in_degree=37中应有from==5370,而代码将其计算为out_degree=26"2010-06-14"-"2010-12-11"分别。 为什么代码对某些代码给出正确的结果,而对另一些代码却给出错误的结果?

解决方法

我认为您只需要按照您的描述进行即可。我会这样安排:

library(data.table)
setDT(dt)
measure_graph <- function(dt) {
  network <- graph_from_data_frame(dt[,.(from,to)],directed=TRUE)
  accounts <- dt[date == max(date),from]
  list(
    account = accounts,closeness = closeness(network,normalized = TRUE)[accounts],betweenness = betweenness(network,normalized = TRUE)[accounts]
  )
}

dt[,measure_graph(dt[(date >= end_date - 180) & (date <= end_date)]),.(end_date = date)]

这只会为每个日期创建一次图表,并提取该日期所有from帐户所需的统计信息。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res