如何改进以下代码的处理时间?
我有以下示例数据集,其中每个观察包含 两个人的ID(主要代理人编码为
aid
和合作伙伴
coded pid
) 在项目 coded 中一起工作的人
作为 oid
在编码为 o3.month.date
.pid
的角色信息,里面有一个
每个 id 的单一角色。
我的目标是
(1)获取每对
aid
和pid
的过去项目的数量
上个月一起工作o3.month.date.previous
(就在一个月前),
和aid
和 pid
在所有项目中的联合过去经验的平均值,并按当月的特定合作伙伴角色 o3.month.date
.
为了帮助您理解,我在数据集下方附上了当前代码。
d <-
structure(list(aid = c("112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112", "112", "112", "112", "112",
"112", "112", "112", "112", "112"), pid = c("216", "287", "567",
"734", "783", "393", "514", "898", "908", "177", "273", "454",
"514", "783", "896", "32", "292", "353", "543", "682", "761",
"349", "360", "362", "432", "483", "561", "349", "360", "362",
"432", "123", "287", "307", "425", "454", "734", "782", "262",
"317", "330", "481", "506", "734", "908", "121", "300", "393",
"514", "701", "716", "849", "908", "196", "318", "367", "428",
"578", "666", "146", "285", "297", "353", "402", "675", "770",
"827", "895", "212", "265", "285", "318", "393", "683", "800",
"393", "514", "716", "821", "196", "301", "313", "360", "841",
"335", "400", "852", "897", "123", "178", "294", "393", "514",
"586", "716", "821", "32", "292", "334", "353", "682", "761",
"10", "150", "289", "509", "510", "513", "546", "682", "128",
"367", "393", "461", "514", "716", "742", "36", "330", "359",
"402", "481", "715", "869", "393", "514", "898", "908", "135",
"154", "159", "314", "452", "465", "524", "546", "560", "792",
"829", "879", "35", "301", "321", "338", "509", "553", "682",
"774", "151", "246", "343", "360", "385", "570", "908", "146",
"249", "275", "447", "560", "852", "321", "510", "701", "857",
"19", "174", "292", "301", "335", "421", "513", "682", "804",
"349", "360", "362", "432", "561", "205", "270", "338", "416",
"483", "553", "663", "769", "915", "223", "335", "421", "442",
"786", "891", "133", "294", "305", "346", "400", "483", "541",
"593", "658", "661", "681", "689", "857", "871", "192", "334",
"393", "871", "899", "174", "311", "343", "454", "543", "771",
"400", "517", "658", "857", "335", "358", "441", "648", "879",
"135", "182", "282", "288", "302", "314", "435", "585", "687",
"769", "786", "273", "333", "380", "483", "581", "715", "751",
"321", "510", "701", "857", "282", "585", "769", "786", "282",
"585", "769", "786", "287", "560", "567", "578", "842", "146",
"285", "297", "353", "402", "770", "827", "895", "301", "335",
"859", "915", "151", "288", "301", "335", "541", "859", "158",
"301", "313", "335", "483", "687", "859", "915", "321", "510",
"585", "857", "879", "216", "302", "416", "557", "762", "786",
"215", "240", "553", "585", "593", "746", "843", "879", "121",
"222", "302", "338", "416", "509", "601", "607", "663", "799",
"159", "171", "321", "509", "510", "601", "602", "753", "832",
"187", "287", "543", "567", "578", "842", "321", "510", "857",
"859", "188", "334", "454", "701", "716", "178", "334", "454",
"798", "813", "307", "528", "529", "568", "577", "653", "287",
"454", "734", "782", "304", "393", "502", "523", "815", "302",
"483", "585", "687", "849", "302", "585", "687", "769", "123",
"301", "335", "385", "682", "869", "304", "393", "523", "815",
"304", "393", "471", "815", "454", "509", "514", "783", "852",
"302", "416", "601", "607", "663", "799", "33", "275", "288",
"304", "393", "471", "523", "653", "167", "170", "321", "322",
"365", "441", "601", "808", "859", "338", "509", "601", "663",
"799", "122", "240", "314", "335", "442", "701", "808", "177",
"188", "244", "273", "335", "435", "553", "585", "682", "289",
"510", "546", "748", "287", "454", "734", "782", "196", "213",
"294", "308", "422", "687", "865", "204", "337", "471", "800",
"826", "887", "287", "454", "734", "782", "19", "321", "335",
"393", "441", "546", "548", "585", "786", "849", "878"), p3.role = c("Nurse",
"Nurse", "Nurse", "Physician", "Anesthesiologist", "Nurse", "Nurse",
"Physician", "Anesthesiologist", "Nurse", "Nurse", "Nurse", "Nurse",
"Anesthesiologist", "Physician", "Nurse", "Nurse", "Nurse", "Nurse",
"Anesthesiologist", "Physician", "Nurse", "Physician", "Anesthesiologist",
"Nurse", "Nurse", "Nurse", "Nurse", "Physician", "Anesthesiologist",
"Nurse", "Nurse", "Nurse", "Nurse", "Nurse", "Nurse", "Physician",
"Anesthesiologist", "Nurse", "Nurse", "Nurse", "Nurse", "Nurse",
"Physician", "Anesthesiologist", "Nurse", "Nurse", "Nurse", "Nurse",
"Physician", "Anesthesiologist", "Physician", "Anesthesiologist",
"Nurse", "Nurse", "Anesthesiologist", "Nurse", "Nurse", "Physician",
"Nurse", "Nurse", "Nurse", "Nurse", "Nurse", "Physician", "Anesthesiologist",
"Physician", "Physician", "Nurse", "Physician", "Nurse", "Nurse",
"Nurse", "Anesthesiologist", "Anesthesiologist", "Nurse", "Nurse",
"Anesthesiologist", "Physician", "Nurse", "Nurse", "Nurse", "Physician",
"Anesthesiologist", "Nurse", "Nurse", "Physician", "Anesthesiologist",
"Nurse", "Nurse", "Nurse", "Nurse", "Nurse", "Nurse", "Anesthesiologist",
"Physician", "Nurse", "Nurse", "Nurse", "Nurse", "Anesthesiologist",
"Physician", "Physician", "Nurse", "Nurse", "Nurse", "Nurse",
"Nurse", "Anesthesiologist", "Anesthesiologist", "Nurse", "Anesthesiologist",
"Nurse", "Nurse", "Nurse", "Anesthesiologist", "Physician", "Nurse",
"Nurse", "Nurse", "Nurse", "Nurse", "Anesthesiologist", "Physician",
"Nurse", "Nurse", "Physician", "Anesthesiologist", "Nurse", "Nurse",
"Nurse", "Nurse", "Nurse", "Nurse", "Nurse", "Anesthesiologist",
"Anesthesiologist", "Physician", "Anesthesiologist", "Physician",
"Nurse", "Nurse", "Nurse", "Nurse", "Nurse", "Nurse", "Anesthesiologist",
"Physician", "Nurse", "Nurse", "Nurse", "Physician", "Nurse",
"Nurse", "Anesthesiologist", "Nurse", "Nurse", "Nurse", "Nurse",
"Anesthesiologist", "Physician", "Nurse", "Nurse", "Physician",
"Anesthesiologist", "Physician", "Nurse", "Nurse", "Nurse", "Nurse",
"Nurse", "Nurse", "Anesthesiologist", "Physician", "Nurse", "Physician",
"Anesthesiologist", "Nurse", "Nurse", "Nurse", "Nurse", "Nurse",
"Nurse", "Nurse", "Nurse", "Anesthesiologist", "Physician", "Anesthesiologist",
"Nurse", "Nurse", "Nurse", "Nurse", "Anesthesiologist", "Physician",
"Nurse", "Nurse", "Nurse", "Nurse", "Nurse", "Nurse", "Anesthesiologist",
"Nurse", "Physician", "Anesthesiologist", "Physician", "Physician",
"Anesthesiologist", "Anesthesiologist", "Nurse", "Nurse", "Nurse",
"Anesthesiologist", "Physician", "Nurse", "Nurse", "Nurse", "Nurse",
"Nurse", "Physician", "Nurse", "Nurse", "Physician", "Anesthesiologist",
"Nurse", "Nurse", "Nurse", "Anesthesiologist", "Physician", "Nurse",
"Nurse", "Nurse", "Nurse", "Nurse", "Nurse", "Nurse", "Nurse",
"Anesthesiologist", "Physician", "Anesthesiologist", "Nurse",
"Nurse", "Nurse", "Nurse", "Nurse", "Anesthesiologist", "Physician",
"Nurse", "Nurse", "Physician", "Anesthesiologist", "Nurse", "Nurse",
"Physician", "Anesthesiologist", "Nurse", "Nurse", "Physician",
"Anesthesiologist", "Nurse", "Anesthesiologist", "Nurse", "Nurse",
"Physician", "Nurse", "Nurse", "Nurse", "Nurse", "Nurse", "Anesthesiologist",
"Physician", "Physician", "Nurse", "Nurse", "Physician", "Anesthesiologist",
"Nurse", "Nurse", "Nurse", "Nurse", "Anesthesiologist", "Physician",
"Nurse", "Nurse", "Nurse", "Nurse", "Nurse", "Anesthesiologist",
"Physician", "Anesthesiologist", "Nurse", "Nurse", "Nurse", "Anesthesiologist",
"Physician", "Nurse", "Nurse", "Nurse", "Nurse", "Physician",
"Anesthesiologist", "Nurse", "Nurse", "Nurse", "Nurse", "Nurse",
"Anesthesiologist", "Anesthesiologist", "Physician", "Nurse",
"Nurse", "Nurse", "Nurse", "Nurse", "Nurse", "Nurse", "Nurse",
"Anesthesiologist", "Physician", "Nurse", "Nurse", "Nurse", "Nurse",
"Nurse", "Nurse", "Nurse", "Physician", "Anesthesiologist", "Nurse",
"Nurse", "Nurse", "Nurse", "Nurse", "Physician", "Nurse", "Nurse",
"Anesthesiologist", "Physician", "Nurse", "Nurse", "Nurse", "Physician",
"Anesthesiologist", "Nurse", "Nurse", "Nurse", "Anesthesiologist",
"Physician", "Nurse", "Nurse", "Nurse", "Nurse", "Nurse", "Physician",
"Nurse", "Nurse", "Physician", "Anesthesiologist", "Nurse", "Nurse",
"Nurse", "Anesthesiologist", "Physician", "Nurse", "Nurse", "Nurse",
"Anesthesiologist", "Physician", "Nurse", "Nurse", "Anesthesiologist",
"Physician", "Nurse", "Nurse", "Nurse", "Nurse", "Anesthesiologist",
"Physician", "Nurse", "Nurse", "Anesthesiologist", "Physician",
"Nurse", "Nurse", "Nurse", "Physician", "Nurse", "Nurse", "Nurse",
"Anesthesiologist", "Physician", "Nurse", "Nurse", "Nurse", "Nurse",
"Anesthesiologist", "Physician", "Nurse", "Nurse", "Nurse", "Nurse",
"Nurse", "Nurse", "Anesthesiologist", "Physician", "Nurse", "Nurse",
"Nurse", "Nurse", "Nurse", "Nurse", "Nurse", "Anesthesiologist",
"Physician", "Nurse", "Nurse", "Nurse", "Anesthesiologist", "Physician",
"Nurse", "Nurse", "Nurse", "Nurse", "Nurse", "Physician", "Anesthesiologist",
"Nurse", "Nurse", "Physician", "Nurse", "Nurse", "Nurse", "Nurse",
"Nurse", "Anesthesiologist", "Nurse", "Nurse", "Anesthesiologist",
"Physician", "Nurse", "Nurse", "Physician", "Anesthesiologist",
"Nurse", "Nurse", "Nurse", "Nurse", "Nurse", "Anesthesiologist",
"Physician", "Nurse", "Nurse", "Nurse", "Anesthesiologist", "Physician",
"Physician", "Nurse", "Nurse", "Physician", "Anesthesiologist",
"Physician", "Nurse", "Nurse", "Nurse", "Nurse", "Anesthesiologist",
"Nurse", "Nurse", "Anesthesiologist", "Physician", "Physician"
), oid = c("o417", "o417", "o417", "o417", "o417", "o485", "o485",
"o485", "o485", "o844", "o844", "o844", "o844", "o844", "o844",
"o1083", "o1083", "o1083", "o1083", "o1083", "o1083", "o1677",
"o1677", "o1677", "o1677", "o1677", "o1677", "o1745", "o1745",
"o1745", "o1745", "o1887", "o1887", "o1887", "o1887", "o1887",
"o1887", "o1887", "o2216", "o2216", "o2216", "o2216", "o2216",
"o2216", "o2216", "o2887", "o2887", "o2887", "o2887", "o2887",
"o2887", "o2887", "o2887", "o3296", "o3296", "o3296", "o3296",
"o3296", "o3296", "o4038", "o4038", "o4038", "o4038", "o4038",
"o4038", "o4038", "o4038", "o4038", "o4665", "o4665", "o4665",
"o4665", "o4665", "o4665", "o4665", "o4824", "o4824", "o4824",
"o4824", "o4866", "o4866", "o4866", "o4866", "o4866", "o5960",
"o5960", "o5960", "o5960", "o6099", "o6099", "o6099", "o6099",
"o6099", "o6099", "o6099", "o6099", "o7276", "o7276", "o7276",
"o7276", "o7276", "o7276", "o7855", "o7855", "o7855", "o7855",
"o7855", "o7855", "o7855", "o7855", "o8332", "o8332", "o8332",
"o8332", "o8332", "o8332", "o8332", "o9535", "o9535", "o9535",
"o9535", "o9535", "o9535", "o9535", "o9773", "o9773", "o9773",
"o9773", "o10345", "o10345", "o10345", "o10345", "o10345", "o10345",
"o10345", "o10345", "o10345", "o10345", "o10345", "o10345", "o10787",
"o10787", "o10787", "o10787", "o10787", "o10787", "o10787", "o10787",
"o10799", "o10799", "o10799", "o10799", "o10799", "o10799", "o10799",
"o10823", "o10823", "o10823", "o10823", "o10823", "o10823", "o11083",
"o11083", "o11083", "o11083", "o11130", "o11130", "o11130", "o11130",
"o11130", "o11130", "o11130", "o11130", "o11130", "o11752", "o11752",
"o11752", "o11752", "o11752", "o12251", "o12251", "o12251", "o12251",
"o12251", "o12251", "o12251", "o12251", "o12251", "o12908", "o12908",
"o12908", "o12908", "o12908", "o12908", "o13239", "o13239", "o13239",
"o13239", "o13239", "o13239", "o13239", "o13239", "o13239", "o13239",
"o13239", "o13239", "o13239", "o13239", "o13311", "o13311", "o13311",
"o13311", "o13311", "o13476", "o13476", "o13476", "o13476", "o13476",
"o13476", "o14487", "o14487", "o14487", "o14487", "o14582", "o14582",
"o14582", "o14582", "o14582", "o14594", "o14594", "o14594", "o14594",
"o14594", "o14594", "o14594", "o14594", "o14594", "o14594", "o14594",
"o14975", "o14975", "o14975", "o14975", "o14975", "o14975", "o14975",
"o15127", "o15127", "o15127", "o15127", "o15776", "o15776", "o15776",
"o15776", "o16086", "o16086", "o16086", "o16086", "o16258", "o16258",
"o16258", "o16258", "o16258", "o16585", "o16585", "o16585", "o16585",
"o16585", "o16585", "o16585", "o16585", "o18669", "o18669", "o18669",
"o18669", "o18921", "o18921", "o18921", "o18921", "o18921", "o18921",
"o19037", "o19037", "o19037", "o19037", "o19037", "o19037", "o19037",
"o19037", "o19151", "o19151", "o19151", "o19151", "o19151", "o19511",
"o19511", "o19511", "o19511", "o19511", "o19511", "o19703", "o19703",
"o19703", "o19703", "o19703", "o19703", "o19703", "o19703", "o20077",
"o20077", "o20077", "o20077", "o20077", "o20077", "o20077", "o20077",
"o20077", "o20077", "o20576", "o20576", "o20576", "o20576", "o20576",
"o20576", "o20576", "o20576", "o20576", "o23257", "o23257", "o23257",
"o23257", "o23257", "o23257", "o24617", "o24617", "o24617", "o24617",
"o25950", "o25950", "o25950", "o25950", "o25950", "o27339", "o27339",
"o27339", "o27339", "o27339", "o28545", "o28545", "o28545", "o28545",
"o28545", "o28545", "o31305", "o31305", "o31305", "o31305", "o31537",
"o31537", "o31537", "o31537", "o31537", "o34001", "o34001", "o34001",
"o34001", "o34001", "o35072", "o35072", "o35072", "o35072", "o35593",
"o35593", "o35593", "o35593", "o35593", "o35593", "o35764", "o35764",
"o35764", "o35764", "o37791", "o37791", "o37791", "o37791", "o38486",
"o38486", "o38486", "o38486", "o38486", "o43255", "o43255", "o43255",
"o43255", "o43255", "o43255", "o45270", "o45270", "o45270", "o45270",
"o45270", "o45270", "o45270", "o45270", "o48337", "o48337", "o48337",
"o48337", "o48337", "o48337", "o48337", "o48337", "o48337", "o50322",
"o50322", "o50322", "o50322", "o50322", "o54496", "o54496", "o54496",
"o54496", "o54496", "o54496", "o54496", "o65420", "o65420", "o65420",
"o65420", "o65420", "o65420", "o65420", "o65420", "o65420", "o73076",
"o73076", "o73076", "o73076", "o73253", "o73253", "o73253", "o73253",
"o74681", "o74681", "o74681", "o74681", "o74681", "o74681", "o74681",
"o75274", "o75274", "o75274", "o75274", "o75274", "o75274", "o76855",
"o76855", "o76855", "o76855", "o78329", "o78329", "o78329", "o78329",
"o78329", "o78329", "o78329", "o78329", "o78329", "o78329", "o78329"
), o3.month.date = structure(c(16861, 16861, 16861, 16861, 16861,
16892, 16892, 16892, 16892, 16861, 16861, 16861, 16861, 16861,
16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861,
16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861,
16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861,
16861, 16861, 16861, 16861, 16892, 16892, 16892, 16892, 16892,
16892, 16892, 16892, 16861, 16861, 16861, 16861, 16861, 16861,
16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861,
16892, 16892, 16892, 16892, 16892, 16892, 16892, 16892, 16892,
16892, 16892, 16861, 16861, 16861, 16861, 16861, 16861, 16861,
16861, 16861, 16892, 16892, 16892, 16892, 16892, 16892, 16892,
16892, 16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861,
16861, 16861, 16861, 16861, 16861, 16861, 16892, 16892, 16892,
16892, 16892, 16892, 16892, 16861, 16861, 16861, 16861, 16861,
16861, 16861, 16892, 16892, 16892, 16892, 16861, 16861, 16861,
16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861,
16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861,
16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861,
16861, 16861, 16861, 16892, 16892, 16892, 16892, 16892, 16892,
16892, 16892, 16892, 16892, 16892, 16892, 16892, 16861, 16861,
16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861,
16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861,
16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861,
16861, 16861, 16861, 16861, 16861, 16922, 16922, 16922, 16922,
16922, 16892, 16892, 16892, 16892, 16892, 16892, 16861, 16861,
16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861,
16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861,
16861, 16861, 16861, 16861, 16861, 16861, 16861, 16892, 16892,
16892, 16892, 16861, 16861, 16861, 16861, 16861, 16861, 16861,
16861, 16892, 16892, 16892, 16892, 16892, 16861, 16861, 16861,
16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861,
16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861,
16861, 16861, 16861, 16861, 16861, 16892, 16892, 16892, 16892,
16892, 16892, 16892, 16892, 16892, 16892, 16892, 16861, 16861,
16861, 16861, 16861, 16861, 16861, 16861, 16922, 16922, 16922,
16922, 16922, 16922, 16922, 16922, 16922, 16922, 16892, 16892,
16892, 16892, 16892, 16892, 16892, 16892, 16892, 16892, 16892,
16892, 16892, 16892, 16892, 16892, 16892, 16892, 16892, 16892,
16892, 16892, 16892, 16892, 16892, 16892, 16892, 16892, 16892,
16892, 16892, 16892, 16892, 16892, 16892, 16861, 16861, 16861,
16861, 16922, 16922, 16922, 16922, 16922, 16892, 16892, 16892,
16892, 16892, 16892, 16892, 16892, 16892, 16922, 16922, 16922,
16922, 16922, 16922, 16922, 16922, 16922, 16922, 16922, 16922,
16922, 16922, 16922, 16922, 16922, 16922, 16922, 16922, 16922,
16922, 16922, 16922, 16922, 16922, 16922, 16922, 16922, 16922,
16922, 16922, 16922, 16922, 16922, 16922, 16922, 16922, 16922,
16922, 16922, 16922, 16922, 16922, 16922, 16922, 16922, 16861,
16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861,
16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861,
16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861,
16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861,
16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861,
16861, 16861, 16861, 16861, 16861, 16861), class = "Date"), o3.month.date.previous = structure(c(NA,
NA, NA, NA, NA, 16861, 16861, 16861, 16861, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 16861,
16861, 16861, 16861, 16861, 16861, 16861, 16861, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 16861, 16861,
16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861,
NA, NA, NA, NA, NA, NA, NA, NA, NA, 16861, 16861, 16861, 16861,
16861, 16861, 16861, 16861, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, 16861, 16861, 16861, 16861, 16861, 16861,
16861, NA, NA, NA, NA, NA, NA, NA, 16861, 16861, 16861, 16861,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, 16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861,
16861, 16861, 16861, 16861, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, 16892, 16892, 16892, 16892,
16892, 16861, 16861, 16861, 16861, 16861, 16861, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, 16861, 16861, 16861, 16861, NA,
NA, NA, NA, NA, NA, NA, NA, 16861, 16861, 16861, 16861, 16861,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 16861, 16861, 16861,
16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861, NA, NA,
NA, NA, NA, NA, NA, NA, 16892, 16892, 16892, 16892, 16892, 16892,
16892, 16892, 16892, 16892, 16861, 16861, 16861, 16861, 16861,
16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861,
16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861,
16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861,
16861, 16861, 16861, NA, NA, NA, NA, 16892, 16892, 16892, 16892,
16892, 16861, 16861, 16861, 16861, 16861, 16861, 16861, 16861,
16861, 16892, 16892, 16892, 16892, 16892, 16892, 16892, 16892,
16892, 16892, 16892, 16892, 16892, 16892, 16892, 16892, 16892,
16892, 16892, 16892, 16892, 16892, 16892, 16892, 16892, 16892,
16892, 16892, 16892, 16892, 16892, 16892, 16892, 16892, 16892,
16892, 16892, 16892, 16892, 16892, 16892, 16892, 16892, 16892,
16892, 16892, 16892, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), class = "Date")), row.names = c(NA,
-470L), class = c("tbl_df", "tbl", "data.frame"))
d1 <-
d %>%
ddply(c('aid', 'p3.role'), function(x){
registerDoMC(4)
unregister <- function() {
env <- foreach:::.foreachGlobals
rm(list=ls(name=env), pos=env)
}
x %>%
ddply('o3.month.date', function(i){
past <-
x %>%
filter(o3.month.date == i$o3.month.date.previous[1]) %>%
group_by(pid) %>%
summarise(n = n()) %>%
ungroup
current <-
i %>%
left_join(
past,
by = 'pid'
) %>%
distinct %>%
mutate(n = ifelse(is.na(n), 0, n)) %>%
summarise(
a1.joint = mean(n)
)
unregister()
current
}, .parallel = T)
}, .progress = 'text')
d1
这就是我想你想要的,虽然我没有完全理解最终目标。最好始终提供所需的输出,即使只是您数据的一个子集,这样其他人可以更好地了解您的需求。从你的问题来看,你已经有了正确的答案,只是速度慢而已。
以下
ans1
与第一个问题相关,ans2
与第二个问题相关。我真的不明白问题二,所以我的解决方案很可能不是您所需要的。两者都在我的电脑上即时执行。
counts <- d %>%
group_by(aid, pid, o3.month.date) %>%
summarise(n = n()) %>%
ungroup() %>%
right_join(
d,
by = c(
"aid" = "aid",
"pid" = "pid",
"o3.month.date" = "o3.month.date.previous"
)
) %>%
arrange(o3.month.date.y, aid, pid) %>%
rename(
o3.month.date.previous = "o3.month.date",
o3.month.date = "o3.month.date.y"
) %>%
mutate(
n = if_else(is.na(n), 0L, n)
)
ans1 <- counts %>% filter(!is.na(o3.month.date.previous))
ans1
ans2 <- d %>%
group_by(aid, pid, p3.role, o3.month.date) %>%
summarise(n = n()) %>%
ungroup() %>%
group_by(aid, pid, p3.role) %>%
summarise(avg = mean(n))
ans2