在r中合并数据框和查找表,保留数据框中的所有记录

2024-02-29

我有一个 59720 ob​​s 的数据框。如下所示。我想为查找表中的每个观察值分配一个 MARKETNAME。

> data (a)

     DAY  HOUR LEAD Row.Count     DATE    ITIME  HOMEPHONE            CITY  STATE ZIPCODE     ZONENAME
1 Monday 13:00    1      9430 7/1/2013 13:42:51            FORT LAUDERDALE     FL  33315       68
2 Monday 13:00    1      9432 7/1/2013 13:43:50 xxxxx9802x  PLEASANT GROVE     AL  35127       82
3 Monday 13:00    1      9434 7/1/2013 13:46:18 5xxxx85x10      ORO VALLEY     AZ  85737       54
4 Monday  0:00    1      9435 7/1/2013  0:04:34 50xxxx1x364          SPOKANE    WA  99204      211
5 Monday 11:00    1      9436 7/1/2013 11:45:43 951xxxxx20        RIVERSIDE    CA  92507       31
6 Monday 11:00    1      9437 7/1/2013 11:46:26 760xxxxx679            VISTA    CA  92081      539

我有一个邮政编码查找表,其中包含 43126 个唯一邮政编码,如下所示:

> data (b)

MARKETNAME            ZIPCODE
NEW YORK              00501
NEW YORK              00544
SPRINGFIELD-HOLYOKE   01001
SPRINGFIELD-HOLYOKE   01002
SPRINGFIELD-HOLYOKE   01003
SPRINGFIELD-HOLYOKE   01004

我想简单地将 MARKETNAME 分配给我的数据集"a"比较ZIPCODE in "b"。所以我用了

> c <- merge(a, b, by="ZIPCODE") .

它返回了 58,972 个 obs。这意味着我失去了 748 个 obs。我不想丢失任何记录a所以我改变了我的代码如下:

> c <- merge (a, b, by = "ZIPCODE" , all.x=TRUE) .

奇怪的是,这返回了 61,652 obs。而不是我的预期返回 59,720 ob​​s。按照原来的a带有一些 NA 的数据帧。

根据文档,

“如果为 TRUE,则额外的行将添加到输出中,x 中的每一行在 y 中没有匹配的行。这些行在通常填充 y 中的值的列中将具有 NA。默认值为 FALSE,以便输出中仅包含包含 x 和 y 数据的行。”

我对此的解释绝对是错误的。有人可以解释我做错了什么以及如何完成这个简单的任务吗?

我提到:如何根据特定条件合并数据框并更改元素值? https://stackoverflow.com/questions/24644026/how-to-merge-data-frames-and-change-element-values-based-on-certain-conditions, r 中 2 个相关数据帧的子集和合并 https://stackoverflow.com/questions/19468378/subsetting-and-merging-from-2-related-data-frames-in-r, 如何在R中合并两个大小不等的数据框 https://stackoverflow.com/questions/22859624/how-to-merge-two-unequal-size-data-frame-in-r但它们都与我的问题无关。


我更喜欢join from plyr默认情况下,左连接返回第一个数据框中记录的所有匹配项。

c <- join(a, b, by="ZIPCODE")

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在r中合并数据框和查找表,保留数据框中的所有记录 的相关文章

  • kmeans 对分组数据进行聚类

    目前 我尝试在分组数据中找到簇的中心 通过使用示例数据集和问题定义 我能够创建kmeans每个组内的集群 然而 当涉及到给定组的集群的每个中心时 我不知道如何获取它们 https rdrr io cran broom man kmeans
  • 在 mutate 和 across 之后使用 ~separate

    目的是将所有物种 setosa 行转换为一行 setosa 这是一个最小的示例 实际上有更多列和更多组 我有这个数据框 head iris 2 gt select 1 2 5 gt group by Species Sepal Length
  • 如何在 R 中只为直方图的一个标签着色?

    我有一个像这样的数据框 CellLines ZEB1 600MPE 2 8186 AU565 2 783 BT20 2 7817 BT474 2 6433 BT483 2 4994 BT549 3 035 CAMA1 2 718 DU447
  • jupyter 中的 r 图形 - 无法启动 png() 设备

    我在 Jupyter 中使用 R 但无法在笔记本本身中绘制图表 这是一个可重现的示例 set seed 123 mat as matrix x rnorm 100 y rnorm 100 plot mat 在朱皮特中 Error in pn
  • 如何使用 sprintf 函数在字符中添加前导“0”而不是空格?

    我正在尝试使用sprintf函数为字符添加前导 0 并使所有字符长度相同 然而我得到的是领先空间 My code a lt c 12 123 1234 sprintf 04s a 1 12 123 1234 我试图得到什么 1 0012 0
  • R:如何找到向量的模式[重复]

    这个问题在这里已经有答案了 下面是我的data frame我想知道每个内存类别 1 到 8 的模式是什么 gt dput d structure list MEMORY1 c 5 5 7 1 5 6 4 5 4 5 5 4 1 5 5 2
  • matplotlib 中的 R 风格数据轴缓冲区

    R 绘图自动设置 x 和 y 限制 以在数据和轴之间留出一些空间 我想知道 matplotlib 是否有办法自动执行相同的操作 如果没有 是否有一个好的公式或 经验法则 来说明 R 如何设置其轴限制 在 matplotlib 中 您可以通过
  • ggplot 图例标签内的希腊字母、符号和换行符

    我在尝试着 有换行符 自动或强制 对齐文本 左对齐或左右对齐 有希腊字母和百分号 在 gglot 图例标签内 我尝试了几种方法 但我似乎无法将我读到的所有技巧结合起来 我可以通过插入来换行 n进入标签 但这似乎不适用于希腊字母 不适用于图例
  • 从 data.frame 中提取时用 NA 填充缺失的列

    我有一个函数 它将具有某些列的数据框作为输入 columns a b z 现在我有一个数据框DF只有很少的这些列DF columns f u z 如果列不在其中 如何创建一个包含所有值为 NA 的列的数据框DF这与DF在柱子上 f u z
  • 将 pandas 数据帧拆分为子数据帧列表的最快方法

    我有一个大数据框df我有完整的清单indices中的独特元素df index 我现在想创建一个由元素索引的所有子数据帧的列表indices 具体来说 list df df loc x for x in indices 运行这个命令需要很长时
  • 在 R 中导入 csv 文件时如何保留前导零?

    当我写一个 csv来自 R 的文件 其中我的组名称以前导零值开头 前导零被保留 但是当我导入 csv前导零被删除 组名称被转换为整数 当我导入一个组时 如何保留组名称中的前导零 csvR 中的文件 Example df lt data fr
  • 删除缺失的数据值

    我删除了原始帖子 以便能够发布更大版本的数据集 实际上总共有 418 行 这是我正在进行的生存分析的数据 第一列是 ID 号 其他列标记为 V2 V20 有很多缺失的数据 用 表示 我用coxph 函数来获取以下内容 Saves survi
  • 如何在基数 R 中进行分组

    我想使用以下 SQL 查询来表达base R 没有任何特定的包 select month day count as count avg dep delay as avg delay from flights group by month d
  • R:ifelse 中的字符串列表

    我正在寻找与 MySQL 中的 where var in 语句类似的东西 我的代码如下 data lt data frame id 10001 10030 cc1 rep c a b c 10 attach data data new lt
  • 根据 R 数据框中的名称对列进行平均

    我想知道是否有一种有效的方法来获取每组的平均值类似命名的列谁的名字结尾为 1S and 2S ex ex1S ex2S at time 1并取每组的平均值类似命名的列谁的名字结尾为 1C or 2C ex ex1C ex2C at time
  • dplyr 中的标准评估:全局环境中的函数出现“无法找到函数”错误

    我试图在 dplyr 中对全局环境中的函数使用标准评估 但出现 无法找到函数 错误 这是一些代码 create data frame df lt data frame x rnorm 10 y rnorm 10 define arbitra
  • R参考类问题

    我正在尝试在 R 中创建一个简单的参考类 这是我的代码 R 初学者 MyClass lt setRefClass MyClass fields list a numeric b numeric methods list initialize
  • 在 R 中使用逻辑 grep 抓取文本

    下午好 谢谢你帮我解答这个问题 我有兴趣抓取一组超过 5000 个 URL 的列表 我使用 lapply 和 readLines 使用下面的示例代码提取这些网页的文本 multipleURL lt c http dailymed nlm n
  • 按组计算连续行中的值之间的差异

    这是我的一个df 数据框 group value 1 10 1 20 1 25 2 5 2 10 2 15 我需要按组计算连续行中的值之间的差异 所以 我需要一个结果 group value diff 1 10 NA because the
  • R data.table fwrite 到 fread 空间分隔符并清空

    我在使用 fread 以 作为分隔符和散布的空白值时遇到问题 例如 这个 dt lt data table 1 5 1 5 1 5 make a simple table dt 3 V2 NA add a blank in the midd

随机推荐