【发布时间】:2017-12-27 22:22:53
【问题描述】:
新海报,但长期读者。我遇到了一个问题,我在 R 中没有找到解决方案。基本上是条件 sumif 跨越两个数据帧。
每个数据框都有多个 XID 和日期。
我想要的是 D1 中的 SUMIF
有人可以解释一下怎么做吗?
非常感谢。
** 编辑*
您好,这两个数据框如下:
D1:
结构(列表(datecreat = 结构(c(17240、17240、17240、17240、 17240、17240、17240、17240、17240、17240、17240、17240、17240、 17240、17295、17295、17295、17295、17295、17295、17295、17295、 17295、17295、17295、17295、17295、17295、17240、17240、17240、 17240、17240、17240、17240、17240、17240、17240、17240、17240、 17240、17240、17240、17240、17240、17240、17240、17240、17240、 17240、17240、17240、17240、17240、17240、17240、17240、17240、 17240、17240、17240、17240、17240、17240、17240、17240、17240、 17240、17240、17240、17309、17309、17309、17309、17309、17309、 17309、17309、17309、17309、17309、17309、17309、17309、17309、 17309、17309、17309、17309、17309、17309、17309、17309、17309、 17309, 17309, 17309, 17309, 17295, 17295), class= "日期"), dateadj = 结构(c(17395, 17395、17395、17395、17395、17395、17395、17395、17395、17395、 17395、17395、17395、17395、17395、17395、17395、17395、17395、 17395、17395、17395、17395、17395、17395、17395、17395、17395、 17395、17395、17395、17395、17395、17395、17395、17395、17395、 17395、17395、17395、17395、17395、17395、17395、17395、17395、 17395、17395、17395、17395、17395、17395、17395、17395、17395、 17395、17395、17395、17395、17395、17395、17395、17395、17395、 17395、17395、17395、17395、17395、17395、17395、17395、17395、 17395、17395、17395、17395、17395、17395、17395、17395、17395、 17395、17395、17395、17395、17395、17395、17395、17395、17395、 17395、17395、17395、17395、17395、17395、17395、17395、17395 ), class= "日期"), dlisted = c(155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, 100, 100), adjdlisted = c(105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 50, 50), XID = c("1661533JPY", "1661533RUE", "1661533MYE", "1661533AUE", “1661533SGE”、“1661533BHE”、“1661533QAE”、“1661533SKE”、“1661533AEE”、 “1661533TWE”、“1661533NZE”、“1661533USE”、“1661533HKE”、“1661533CNE”、 “1661333HKE”、“1661333AEE”、“1661333BHE”、“1661333USE”、“1661333MYE”、 “1661333JPY”、“1661333AUE”、“1661333SKE”、“1661333NZE”、“1661333TWE”、 “1661333QAE”、“1661333RUE”、“1661333CNE”、“1661333SGE”、“1534203JPY”、 “1534203RUE”、“1534203TWE”、“1534203SKE”、“1534203USE”、“1534203NZE”、 “1534203QAE”、“1534203HKE”、“1534203SGE”、“1534203MYE”、“1534203AUE”、 “1534203BHE”、“1534203CNE”、“1534203AEE”、“1536523CNE”、“1536523QAE”、 “1536523SKE”、“1536523BHE”、“1536523RUE”、“1536523AUE”、“1536523MYE”、 “1536523JPY”、“1536523HKE”、“1536523NZE”、“1536523TWE”、“1536523USE”、 “1536523AEE”、“1536523SGE”、“1536533SKE”、“1536533NZE”、“1536533HKE”、 “1536533QAE”、“1536533BHE”、“1536533AEE”、“1536533AUE”、“1536533SGE”、 “1536533RUE”、“1536533TWE”、“1536533CNE”、“1536533MYE”、“1536533JPY”、 “1536533USE”、“1536693HKE”、“1536693CNE”、“1536693SKE”、“1536693NZE”、 “1536693TWE”、“1536693MYE”、“1536693AEE”、“1536693JPY”、“1536693QAE”、 “1536693AUE”、“1536693SGE”、“1536693USE”、“1536693RUE”、“1536693BHE”、 “1536703HKE”、“1536703BHE”、“1536703CNE”、“1536703MYE”、“1536703TWE”、 “1536703NZE”、“1536703AUE”、“1536703USE”、“1536703JPY”、“1536703AEE”、 “1536703SKE”、“1536703SGE”、“1536703QAE”、“1536703RUE”、“1724593TWE”、 "1724593QAE")), .Names = c("datecreat", "dateadj", "dlisted", "adjdlisted", "XID"), row.names = c(NA, 100L), class= "data.frame")
D2:
结构(列表(产品.ID = c(1098803、1098803、1098803、1132503、 1132503、1132503、1132503、1138833、1138833、1142033、1145443、 1149133、1149133、1149883、1151313、1154713、1154733、1154733、 1155523、1155523、1155883、1156803、1158133、1158883、1158903、 1158983、1159943、1160033、1160043、1160763、1161003、1163693、 1163693、1164633、1165193、1165193、1166843、1166843、1168183、 1168493、1170133、1170313、1172513、1173083、1174213、1174213、 1174213、1174213、1174213、1174443、1174473、1174473、1174473、 1174473、1174473、1174473、1174523、1178173、1178173、1178233、 1181483、1181483、1181483、1182023、1182023、1182023、1182083、 1185163、1185163、1185303、1187793、1187793、1187793、1187793、 1187793、1187873、1189703、1189703、1190023、1190353、1190353、 1190363、1190363、1190363、1190403、1193383、1193383、1193433、 1193473、1193473、1196043、1197753、1198223、1198223、1198223、 1198223, 1198223, 1198223, 1198223, 1198223), 货币 = 结构(c(4L, 8L, 17L, 4L, 5L, 8L, 17L, 17L, 18L, 4L, 17L, 2L, 17L, 17L, 4L, 17L、6L、18L、13L、14L、17L、17L、4L、17L、5L、2L、17L、17L、 17L、17L、4L、5L、7L、4L、2L、17L、8L、17L、11L、5L、17L、6L、 18L、2L、4L、6L、13L、15L、17L、4L、2L、4L、7L、9L、17L、18L、 6L、4L、17L、17L、9L、17L、18L、2L、9L、18L、17L、7L、17L、2L、 6L、7L、14L、17L、18L、9L、4L、17L、7L、4L、18L、4L、5L、18L、 7L、4L、15L、17L、5L、17L、17L、4L、2L、4L、5L、6L、7L、10L、 15L, 17L), .Label = c("AEE", "AUE", "BHE", "CAD", "CNE", "EUR", “GBP”、“HKE”、“JPY”、“MYE”、“NZE”、“QAE”、“RUE”、“SGE”、“SKE”、 "TWE", "USD", "USE"), class= "factor"), Page.Views = c(1L, 1L, 1L, 3L, 2L, 4L, 4L, 14L, 1L, 1L, 1L, 1L, 3L, 1L, 5L, 1L, 1L, 1L, 1L, 1L, 1L, 4L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 1L, 6L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 3L, 10L, 3L, 5L, 6L, 1L, 1L, 5L, 2L, 1L, 1L, 1L, 1L, 1L, 5L, 2L, 2L, 1L, 1L, 1L, 2L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 10L, 6L, 1L, 4L, 1L, 1L, 12L), 日期 = 结构 (c(17360, 17360, 17360, 17360、17360、17360、17360、17360、17360、17360、17360、17360、 17360、17360、17360、17360、17360、17360、17360、17360、17360、 17360、17360、17360、17360、17360、17360、17360、17360、17360、 17360、17360、17360、17360、17360、17360、17360、17360、17360、 17360、17360、17360、17360、17360、17360、17360、17360、17360、 17360、17360、17360、17360、17360、17360、17360、17360、17360、 17360、17360、17360、17360、17360、17360、17360、17360、17360、 17360、17360、17360、17360、17360、17360、17360、17360、17360、 17360、17360、17360、17360、17360、17360、17360、17360、17360、 17360、17360、17360、17360、17360、17360、17360、17360、17360、 17360, 17360, 17360, 17360, 17360, 17360, 17360), class= "日期"), XID = c("1098803CAD", "1098803HKE", "1098803USD", "1132503CAD", “1132503CNE”、“1132503HKE”、“1132503USD”、“1138833USD”、“1138833USE”、 “1142033CAD”、“1145443USD”、“1149133AUE”、“1149133USD”、“1149883USD”、 “1151313CAD”、“1154713USD”、“1154733EUR”、“1154733USE”、“1155523RUE”、 “1155523SGE”、“1155883USD”、“1156803USD”、“1158133CAD”、“1158883USD”、 “1158903CNE”、“1158983AUE”、“1159943USD”、“1160033USD”、“1160043USD”、 “1160763USD”、“1161003CAD”、“1163693CNE”、“1163693GBP”、“1164633CAD”、 “1165193AUE”、“1165193USD”、“1166843HKE”、“1166843USD”、“1168183NZE”、 “1168493CNE”、“1170133USD”、“1170313EUR”、“1172513USE”、“1173083AUE”、 “1174213CAD”、“1174213EUR”、“1174213RUE”、“1174213SKE”、“1174213USD”、 “1174443CAD”、“1174473AUE”、“1174473CAD”、“1174473GBP”、“1174473JPY”、 “1174473USD”、“1174473USE”、“1174523EUR”、“1178173CAD”、“1178173USD”、 “1178233USD”、“1181483JPY”、“1181483USD”、“1181483USE”、“1182023AUE”、 “1182023JPY”、“1182023USE”、“1182083USD”、“1185163GBP”、“1185163USD”、 “1185303AUE”、“1187793EUR”、“1187793GBP”、“1187793SGE”、“1187793USD”、 “1187793USE”、“1187873JPY”、“1189703CAD”、“1189703USD”、“1190023GBP”、 “1190353CAD”、“1190353USE”、“1190363CAD”、“1190363CNE”、“1190363USE”、 “1190403GBP”、“1193383CAD”、“1193383SKE”、“1193433USD”、“1193473CNE”、 “1193473USD”、“1196043USD”、“1197753CAD”、“1198223AUE”、“1198223CAD”、 “1198223CNE”、“1198223EUR”、“1198223GBP”、“1198223MYE”、“1198223SKE”、 "1198223USD")), .Names = c("Product.ID", "Currency", "Page.Views", "日期", "XID"), row.names = c(NA, 100L), class= "data.frame")
我想要 * 在 D1 中添加新列,如果 D1$XID == D2$XID 和 D2$date 为
谢谢
【问题讨论】:
-
您可能需要检查诸如
D1$date<D1$date之类的拼写错误 -
请使用
dput并分享您的D1和D2。