【发布时间】:2021-03-29 20:19:31
【问题描述】:
我是 R 初学者,我正在尝试合并两个数据集,但在丢失数据时遇到了一些麻烦。我可能对我正在做的事情完全不满意。
第一个数据集是杜威十进制系统,数据如下所示 image of 10 rows of data from this set
我已将此数据集命名为 DDC
下一个数据集是在特定时间段内订购的书籍列表。 image of 10 rows of the book ordering dataset 我已将此数据集命名为 DOA
我不确定如何将不在图像中的数据包含在内 (如果需要也可以提供.csvs)
我想根据索书号的前三位合并集合。
为了实现这一点,我在两个集合中创建了一个名为 Call_Category2 的新变量,它采用要匹配的索书号值的前三位。
DDC$Call_Category2 = str_pad(DDC$Call_Category, width = 3, side = "left", pad = "0")
这个数据集刚刚超过 1000 行。它也被填充,因为 000 到 099 杜威十进制分类正在删除它们的前导 0
DOA_data = transform(DOA_data, Call_Category2 = substr(Call_Category, 1,3))
这个数据集大约有 24000 行。
我合并集合并创建一个名为 DOA_Call 的新集合
DOA_Call = merge(DDC, DOA_data, all.x = TRUE)
当我处理数据时,合并似乎工作正常,但 10,000 行没有添加 DOA_Call 数据。他们只是保持原来的状态。这大约是我总数据集的 40%,所以它相当可观。我的第一直觉是它只将 DDC 行放入一次,但这意味着我会丢失 23,000 行,而我没有。
我是在合并时做错了什么,还是数据不够干净?
如果需要更多信息,请告诉我!
我不一定需要代码,关于故障排除方向的指针会很有帮助!
【问题讨论】:
-
包含样本数据的最佳方式是使用
dput()。使用dput(DDC[1:10, ])共享您的DDC数据的前 10 行的复制/可粘贴版本 - 选择一个合适的子集来说明您的问题。 -
可能没有添加数据的行是在
DOA_data中没有匹配的行。取一个没有匹配的行,看看你是否能在DOA_data中找到应该匹配的行。