【发布时间】:2021-01-01 11:23:15
【问题描述】:
这是我的交易数据:
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"(即"2005-01-01"之前的最后6个月)的数据,然后在此形成网络提取数据以计算网络的度量,例如网络中帐户的度中心性、中介中心性。最后,新列degree_centrality和betweenness_centrality的第一行将分别包含账户6644的度中心性和账户6644的中介中心性。 - 同样,在
row 2中,交易日期又是"2005-01-01",所以我们需要提取date_trx位于"2004-07-05"-"2005-01-01"的数据(这是日期"2005-01-01"之前的最后6个月)和然后在这个提取的数据上形成网络,计算网络的度量,例如网络中账户的度中心性、介数中心性。最后,新列degree_centrality和betweenness_centrality的第二行将分别包含账户6753的度中心性和账户6753的中介中心性。 - 所有数据行都是这样的。
PS:
- 让我们考虑
row 1、row 2和row 3。由于日期相同,因此将由日期在"2004-07-05"-"2005-01-01"范围内的数据创建的网络对于所有三行将完全相同。但是,由于degree centr.或betweenness centr.等网络度量将根据from列中的帐户添加到数据中,因此6644、6753和9242的这些网络度量很可能会有所不同彼此。- 此外,当我们提取日期范围之间的数据以形成网络时,会考虑日期间隔的边界。例如,我数据中的第一个日期是
"2005-01-01"(实际上在该日期进行了 4 笔交易)。但是,假设在第一个日期"2005-01-01"上只有一个观察(交易)并且在此日期之前没有任何观察,现在我们要创建一个介于"2004-07-05"-"2005-01-01"之间的数据网络。因为正如我所说,边界也很重要,所以我们可以在这个指定的日期范围内进行的唯一观察来形成网络是日期为"2005-01-01"的观察。因此,由于一笔交易由两个账户组成,因此只有这两个账户(节点)会出现在网络中。因此,归根结底,一次观察就足以构建网络并在其上计算网络指标。
数据样本的dput()输出:
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", "5370", "8605", "5370", "6390",
"5370", "5370", "8934", "5370", "5635", "6046", "5680", "8026",
"9037", "5370", "7816", "8046", "5492", "8756", "5370", "9254",
"5370", "5370", "7078", "6615", "5370", "9817", "8228", "8822",
"5735", "7058", "5370", "8667", "9315", "6053", "7990", "8247",
"8165", "5656", "9261", "5929", "8251", "5370", "6725", "5370",
"6004", "7022", "7442", "5370", "8679", "6491", "7078", "5370",
"5370", "5370", "5658", "5370", "9296", "8386", "5370", "5370",
"5370", "9535", "5370", "7541", "5370", "9621", "5370", "7158",
"8240", "5370", "5370", "8025", "5370", "5370", "5370", "6989",
"5370", "7059", "5370", "5370", "5370", "9121", "5608", "5370",
"5370", "7551", "5370", "5370", "5370", "5370", "9163", "9362",
"6072", "5370", "5370", "5370", "5370", "5370", "5370", "6169",
"5370", "5370", "7034", "8313", "7930", "7151", "8914", "5370",
"9277", "5370", "5370", "6376", "5939", "6253", "5370", "8629",
"5370", "6778", "5370", "5370", "7783", "5370", "5370", "5370",
"7319", "5370", "6644", "9221", "6820", "5370", "5370", "5370",
"6326", "5370", "5370", "6495", "5370", "5370", "7818", "9788",
"6831", "5370", "7986", "5370", "5700", "5370", "5679", "7074",
"5370", "6125", "5370", "6806", "5370", "5841", "5370", "5370",
"5370", "5370", "7177", "8369", "5370", "7420", "9686", "5370",
"5875", "5370", "6196", "5370", "7538", "5370", "5370", "8761",
"5370", "9837", "5370", "6214", "7755", "5370", "7824", "5370",
"5370", "5370", "8115", "8941", "8582", "5370", "5583", "5370",
"5990", "5370", "7497", "5370", "5370", "8336", "5370", "5370",
"9847", "7269", "8479", "5370", "6973", "5370", "5370", "5870",
"9500", "5370", "9406", "6806", "6644", "6255", "9135", "5370",
"7008", "5370", "8197", "5370", "5370", "5370", "5921", "8951",
"5370", "8726", "8384", "5370", "9446", "5370", "5370", "8435",
"5370", "7220", "5370", "9427", "7664", "5370", "6996", "8811",
"6455", "5370", "6022", "5370", "7827", "7290", "5370", "5409",
"6988", "5370", "5698", "5844", "8754", "5370", "5370", "5370",
"5370", "9003", "5370", "9024", "5370", "5370", "5370", "5370",
"8650", "5370", "5370", "5370", "5924", "7815", "5370", "6876",
"8445", "8524", "6799", "6951", "7606", "5950", "9421", "5370",
"5370", "9301", "9409", "8810", "5370", "8892", "5370", "8843",
"5370", "6891", "5370", "5370", "5370", "5370", "5370", "9869",
"7880", "5370", "5370", "8346", "7427", "8308", "6452", "7104",
"5370", "7228", "5370", "7694", "5370", "6296", "5370", "8624",
"5393", "5982", "8619", "8494", "6354", "5370", "8954", "5370",
"5370", "5370", "8356", "5370", "5370", "5370", "5370", "6342",
"5370", "5636", "5370", "5370", "6195", "7265", "5370", "5370",
"5370", "5370", "7504", "9289", "6814", "5370", "5370", "5370",
"6649", "9706", "5370", "7385", "8110", "6359", "6557", "6338",
"5370", "5370", "7937", "9238", "5370", "5370", "6511", "5370",
"5370", "9038", "5370", "9646", "5370", "5370", "5370", "5516",
"5370", "5370", "5370", "6020", "7005", "9824", "5370", "5370",
"5370", "5370", "7131", "6629", "5370", "7683", "5370", "9720",
"5370", "9586", "5370", "5370", "5370", "8984", "5505", "5789",
"5370", "5370", "5370", "7272", "5370", "5370", "5370", "5907",
"5370", "9731", "5370", "5370", "8359", "5370", "7879", "8048",
"5370", "9458", "7931", "7918", "5983", "5939", "6592", "5370",
"5765", "5370", "5370", "5898", "5370", "9558", "9372", "5370",
"5936", "9580", "5370", "8458", "5370", "5370", "9692", "5370",
"6290", "5703", "5747", "9788", "6540", "8600", "7420", "6459",
"5370", "5370", "6768", "7523", "5370", "5370", "9177", "5370",
"8898", "7257", "5370", "5370", "6395", "5370", "7168", "7671",
"6158", "5372", "7983", "8919", "5370", "7614", "5370", "8631",
"5370", "8342", "7227", "5370", "5370", "5370", "6700", "5370",
"5370", "7078", "7349", "5370", "8210", "9427", "5370", "5613"
), to = c("9356", "5605", "8567", "5370", "5636", "5370", "8933",
"8483", "5370", "7626", "5370", "5370", "5370", "5370", "5370",
"9676", "5370", "5370", "5370", "5370", "9105", "5370", "9772",
"6979", "5370", "5370", "7564", "5370", "5370", "5370", "5370",
"5370", "8744", "5370", "5370", "5370", "5370", "5370", "5370",
"5370", "5370", "5370", "5370", "7318", "5370", "8433", "5370",
"5370", "5370", "7122", "5370", "5370", "5370", "8566", "6728",
"9689", "5370", "8342", "5370", "5370", "5614", "5596", "5953",
"5370", "7336", "5370", "7247", "5370", "7291", "5370", "5370",
"6282", "7236", "5370", "8866", "8613", "9247", "5370", "6767",
"5370", "9273", "7320", "9533", "5370", "5370", "8930", "9343",
"5370", "9499", "7693", "7830", "5392", "5370", "5370", "5370",
"7497", "8516", "9023", "7310", "8939", "9736", "5370", "8679",
"5585", "5370", "5370", "5370", "5370", "5370", "7691", "5370",
"7332", "9476", "5370", "5370", "5370", "9239", "5370", "6417",
"5370", "8445", "6016", "5370", "7933", "6929", "7437", "5370",
"6672", "5370", "5370", "5370", "9118", "6640", "7429", "5370",
"9149", "7979", "5370", "5716", "9405", "5370", "5370", "5370",
"6433", "5370", "8747", "5370", "6675", "5370", "5370", "6621",
"5370", "8237", "5370", "6934", "5370", "9361", "7366", "8699",
"9564", "5370", "5370", "5373", "5370", "5370", "8457", "5370",
"6650", "5370", "7033", "5370", "9807", "6984", "5370", "6269",
"5370", "6510", "5370", "5370", "9001", "5370", "6445", "6874",
"8926", "5370", "5370", "5370", "9188", "5370", "5660", "5370",
"6061", "5370", "7523", "8130", "5370", "9570", "6142", "5370",
"5370", "5370", "9272", "5370", "8558", "7020", "5370", "5370",
"8890", "5370", "5370", "5370", "5370", "5370", "5684", "5370",
"6282", "5370", "8422", "7715", "6404", "5370", "5370", "7182",
"5370", "5370", "9635", "5370", "7395", "9352", "5370", "6450",
"5370", "5640", "5370", "5370", "8654", "5370", "5370", "5370",
"6601", "5370", "6029", "5370", "5370", "9251", "5370", "5370",
"9809", "5370", "5370", "5370", "7687", "5417", "8629", "6171",
"5370", "8927", "5370", "9675", "8547", "8601", "6474", "5370",
"9295", "9699", "7161", "5370", "5370", "9359", "5370", "5370",
"5370", "5370", "5370", "5370", "5370", "5370", "8142", "7801",
"5370", "5370", "5370", "8378", "5370", "5460", "5370", "9495",
"5370", "8673", "8990", "6929", "7061", "9469", "5370", "5370",
"8067", "7833", "5370", "5370", "5370", "5370", "5370", "7064",
"5370", "8462", "5370", "6096", "5370", "6985", "5370", "5370",
"5370", "5370", "5370", "5370", "7698", "5370", "5872", "5894",
"9164", "5370", "5554", "5872", "5592", "5565", "5370", "6805",
"5370", "8188", "8041", "5370", "5370", "7622", "8610", "9157",
"8521", "5370", "5370", "5370", "7297", "5802", "6610", "5370",
"5370", "6019", "5370", "5370", "5370", "5370", "5370", "6422",
"7773", "5370", "5370", "6673", "7844", "5370", "7257", "5786",
"5370", "7486", "5370", "8512", "7647", "6112", "5370", "6670",
"9836", "9514", "5370", "5370", "5370", "7172", "8962", "6249",
"9216", "5370", "5370", "8584", "5370", "7282", "5370", "8202",
"5370", "8537", "9829", "8265", "5370", "5370", "5370", "7361",
"8598", "9051", "5370", "9602", "5926", "5719", "5370", "9278",
"5370", "8702", "8958", "5370", "5862", "5370", "5370", "7666",
"5370", "5370", "5370", "5370", "5370", "5370", "6352", "5370",
"6251", "5722", "5370", "8564", "5370", "5370", "8219", "5370",
"5370", "9731", "5370", "5473", "6430", "5370", "8813", "5370",
"5370", "5370", "5370", "5370", "5370", "5370", "5370", "5692",
"6612", "5370", "5370", "7801", "8606", "5370", "9652", "5370",
"5370", "7143", "7007", "5370", "7474", "5370", "5370", "5370",
"5370", "5370", "5370", "6555", "5370", "9065", "5370", "5623",
"5370", "5370", "6888", "8494", "6909", "5370", "5827", "5852",
"5370", "5370", "6710", "5370", "5370", "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, 13452, 13460, 13482, 13493, 13518, 13526, 13537,
13542, 13544, 13596, 13616, 13617, 13626, 13633, 13633, 13639,
13642, 13646, 13656, 13660, 13664, 13667, 13669, 13677, 13686,
13694, 13694, 13707, 13716, 13725, 13738, 13739, 13746, 13756,
13756, 13756, 13761, 13769, 13770, 13776, 13786, 13786, 13786,
13791, 13799, 13806, 13813, 13817, 13817, 13817, 13822, 13829,
13830, 13836, 13847, 13847, 13847, 13852, 13860, 13866, 13871,
13878, 13878, 13878, 13882, 13883, 13883, 13887, 13887, 13888,
13889, 13890, 13891, 13895, 13896, 13896, 13899, 13905, 13909,
13909, 13909, 13910, 13914, 13918, 13922, 13923, 13926, 13938,
13938, 13938, 13943, 13943, 13951, 13952, 13956, 13969, 13969,
13974, 13982, 13983, 13986, 13989, 13999, 13999, 13999, 13999,
14004, 14011, 14011, 14012, 14012, 14013, 14016, 14018, 14030,
14030, 14030, 14035, 14036, 14043, 14046, 14050, 14052, 14060,
14060, 14060, 14065, 14067, 14073, 14076, 14076, 14077, 14083,
14091, 14091, 14096, 14096, 14096, 14097, 14104, 14106, 14117,
14122, 14122, 14122, 14122, 14127, 14135, 14136, 14152, 14152,
14152, 14152, 14157, 14158, 14165, 14165, 14165, 14166, 14183,
14183, 14183, 14183, 14183, 14183, 14188, 14188, 14196, 14196,
14213, 14213, 14213, 14213, 14218, 14226, 14226, 14231, 14232,
14243, 14244, 14244, 14244, 14249, 14249, 14254, 14256, 14257,
14257, 14258, 14259, 14259, 14263, 14263, 14264, 14266, 14267,
14274, 14275, 14275, 14275, 14275, 14280, 14285, 14286, 14286,
14288, 14291, 14299, 14302, 14303, 14303, 14308, 14312, 14313,
14316, 14316, 14317, 14334, 14334, 14334, 14339, 14342, 14347,
14364, 14364, 14364, 14369, 14377, 14377, 14377, 14391, 14395,
14395, 14395, 14395, 14395, 14395, 14400, 14402, 14403, 14406,
14408, 14425, 14425, 14425, 14425, 14425, 14430, 14433, 14436,
14437, 14438, 14440, 14443, 14445, 14456, 14456, 14456, 14456,
14458, 14461, 14461, 14463, 14463, 14464, 14466, 14469, 14484,
14487, 14487, 14487, 14487, 14487, 14487, 14492, 14492, 14498,
14500, 14500, 14508, 14513, 14514, 14517, 14517, 14517, 14517,
14517, 14522, 14522, 14527, 14530, 14537, 14540, 14548, 14548,
14548, 14553, 14556, 14560, 14561, 14563, 14578, 14578, 14578,
14578, 14583, 14584, 14585, 14586, 14591, 14607, 14609, 14609,
14609, 14609, 14609, 14609, 14611, 14612, 14614, 14614, 14615,
14616, 14616, 14618, 14620, 14622, 14622, 14624, 14626, 14628,
14629, 14631, 14633, 14637, 14640, 14640, 14640, 14640, 14645,
14646, 14646, 14648, 14652, 14653, 14668, 14668, 14668, 14668,
14670, 14673, 14673, 14676, 14679, 14680, 14681, 14681, 14685,
14686, 14699, 14699, 14699, 14699, 14703, 14704, 14707, 14711,
14712, 14712, 14727, 14729, 14729, 14729, 14734, 14737, 14738,
14742, 14760, 14760, 14760, 14760, 14760, 14760, 14760, 14763,
14765, 14769, 14773, 14773, 14773, 14774, 14777, 14784, 14790,
14790, 14790, 14790, 14795, 14803, 14821, 14821, 14821, 14821,
14824, 14826, 14826, 14828, 14829, 14829, 14830, 14831, 14834,
14840, 14850, 14852, 14852, 14852, 14852, 14852, 14852, 14856,
14856, 14857, 14865, 14882, 14882, 14882, 14882, 14882, 14882,
14887, 14889, 14889, 14890, 14895, 14910, 14913, 14913, 14913,
14918, 14918, 14919, 14922, 14926, 14927, 14943, 14943, 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, 14.6, 13920, 14.6, 24640, 1600,
261.1, 16400, 3500, 2700, 19882, 182, 14.6, 16927, 25653, 3059,
2880, 9658, 4500, 12480, 14.6, 1000, 3679, 34430, 12600, 14.6,
19.2, 4900, 826, 3679, 2100, 38000, 79, 11400, 21495, 3679, 200,
14.6, 100.6, 3679, 5300, 108.9, 3679, 2696, 7500, 171.6, 14.6,
99.2, 2452, 3679, 3218, 700, 69.7, 14.6, 91.5, 2452, 3679, 2900,
17572, 14.6, 14.6, 90.5, 2452, 49752, 3679, 1900, 14.6, 870,
85.2, 2452, 3679, 1600, 540, 14.6, 14.6, 79, 210, 2452, 28400,
720, 180, 420, 44289, 489, 3679, 840, 2900, 150, 870, 420, 14.6,
152.9, 64.1, 41464, 2452, 205, 3679, 2166, 100, 14.6, 14.6, 59.7,
6588, 2452, 3679, 65, 200, 14.6, 65.7, 2452, 3679, 15792, 2000,
2200, 99.7, 14.6, 140.3, 67.6, 2452, 5600, 873, 3679, 660, 36258,
1900, 2002, 263, 14.6, 63.3, 2452, 14607, 3679, 1400, 7680, 360,
14.6, 14.6, 65.5, 2452, 344, 3679, 990, 1000, 19652, 1080, 14.6,
72.8, 22991, 2452, 1140, 9226, 3679, 2400, 1410, 18300, 14.6,
14.6, 75.7, 2452, 3679, 1700, 14.6, 14.6, 65.4, 78.8, 2452, 6846,
270, 3679, 6339, 3000, 14.6, 14.6, 358.3, 102.3, 14.6, 73.2,
3869, 2452, 3679, 2800, 14.6, 14.6, 72.4, 228.2, 2452, 3679,
3700, 180, 6900, 350, 14.6, 14.6, 59.2, 23131, 2452, 2880, 1200,
630, 3679, 2400, 1680, 17100, 720, 390, 2520, 450, 1920, 840,
137.9, 14.6, 14.6, 55.4, 2452, 5800, 1700, 24977, 3679, 570,
630, 11700, 14.6, 58.3, 2452, 1347, 1455, 4600, 3679, 3300, 14.6,
14.6, 51.9, 2452, 2038, 3679, 14.6, 49.6, 14.6, 2452, 9252, 3294,
3679, 1170, 70.5, 70.1, 91.3, 14.6, 14.6, 54.1, 2452, 46181,
15586, 74529, 3679, 189.5, 318.1, 14.6, 55.2, 14.6, 2452, 6446,
1500, 6300, 3679, 8600, 300, 6500, 2600, 185.2, 14.6, 64.1, 11200,
3041, 2452, 2895, 14037, 3103, 1200, 3679, 870, 14.6, 57.9, 93,
109.1, 67.1, 14.6, 2452, 390, 13200, 7746, 3679, 2300, 2960,
18292, 14.6, 136.9, 7500, 14.6, 65, 2452, 2974, 331, 3679, 1300,
14600, 14.6, 14.6, 72.4, 2452, 1100, 10315, 3679, 39864, 94.1,
101.2, 14.6, 72.4, 2452, 1469, 27132, 4700, 3679, 1000, 101.8,
58.4, 76, 14.6, 14.6, 61.6, 38200, 570, 2400, 2452, 600, 400,
100, 2412, 4485, 1320, 3679, 2500, 600, 810, 1800, 2400, 330,
480, 14.6, 114, 14.6, 55.9, 2452, 500, 4356, 7045, 11889, 3679,
146.1, 14.6, 288.5, 56.3, 1300, 3, 2452, 7156, 24784, 24423,
3679, 822, 810, 20800, 2.2, 1800, 14.6, 63, 1050, 2452, 15976,
4755, 11100, 3679, 180, 14.6, 166.6, 59.9, 2452, 5411, 13405,
3679, 183.9, 14.6, 35.4, 10.8, 14.6, 14.6, 66.7, 1800, 2452,
2277, 511, 800, 3679, 65, 5040, 450, 14.6, 14.6, 93.5, 71.5,
2452, 3679, 14.6, 14.6, 14.6, 75.4, 270, 14, 2452, 4622, 145,
24324, 1523, 372, 3679, 1400, 3100, 14.6, 14.6, 14.6, 77.9, 14.6,
77.1, 14989, 6500, 2452, 3679, 247.3, 14.6, 14.6, 14.6, 190.6,
58.7, 2452, 1398, 4268, 3597, 3679, 1800, 14.6, 14.6, 63.1, 2452,
12400, 5106, 4633, 3679, 510, 14.6, 204.7, 67.1, 4500, 2452,
5800, 1275, 6460, 3679, 6406, 78.7, 52.6)), row.names = c(NA,
-478L), class = "data.frame")
编辑:
根据@pseudospin 的解决方案,代码如下:
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 没有degree=1, in_degree=0 和out_degree=1 而有NA?此外,有些值是正确的,但有些不是。例如,考虑帐户 5370 的日期 "2010-12-11"。
按此日期和帐户过滤输出:
end_date account degree in_degree out_degree
<date> <fctr> <dbl> <dbl> <dbl>
2010-12-11 5370 1 0 1
但是,当我在日期 "2010-12-11" 和帐户 5370 之前的最后 6 个月期间(即 "2010-06-14"-"2010-12-11")过滤上面提供的示例数据时,由
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",而代码分别计算为1,0和1。
为什么代码对某些人给出正确的结果,而对另一些人给出错误的结果?
【问题讨论】:
-
我复制了您的代码版本,它似乎可以工作 - 我没有看到您看到的 NA。这可能与数据表的名称有关 - 您使用的是
data,我在函数外部和内部都使用了dt。尝试为它们设置不同的名称,并从您的环境中删除任何旧名称。此外,问题中的示例数据在 2008 年停止,因此我无法检查问题的其余部分。 -
我刚刚注意到,
from和to列在形成网络时应该是字符格式,而不是因子。这样,所有值都可以正确计算。我认为当这两列是因素时,会发生错误,因为这些因素列的级别包含的帐户数量超过了构成网络的帐户数量。将这两列转换为字符即可解决问题。
标签: r data.table igraph social-networking network-analysis