【问题标题】:Create column based on another dataframe基于另一个数据框创建列
【发布时间】:2011-04-11 09:12:32
【问题描述】:

我有一个看似简单的要求,但似乎无法达到预期的结果。我的数据框比较大,就截图吧:

我想要的是:if ps2c$ps == present2$pn then ps2c$sf == present2$sf

如果不清楚,对于每个ps2c$ps,都有一个present2$pn(present2 只是平均数据)。

【问题讨论】:

  • 截图?你在跟我开玩笑吗? ;-) 说真的,只需将head(ps2c)head(present2) 的输出粘贴 到您的Q 中,选择粘贴的代码/输出,然后单击工具栏中的代码按钮(看起来像大括号的那个) {}) 或按 Ctrl+k 以正确格式化您的代码。
  • 我的数据框很大,但我会记住你的建议。
  • head() 只显示前几行 - 我的意思是,如果您可以显示屏幕截图,您可以显示来自head() 的代码和输出。
  • dput(head(ps2c)) 为您提供数据框前 ​​6 行的表示,我们无需编辑任何内容即可运行。或者,您可以构建一个玩具数据集来展示您想要的内容。
  • @Joris - 这是一个很好的观察结果,有助于提供用于说明目的的小型 sn-ps 数据。

标签: r


【解决方案1】:

您不提供测试数据,但以下内容可能会起作用:

ps2c$sf <- present2$sf[match(ps2c$ps, present2$pn)]

【讨论】:

  • 我正在处理一个包含 7200 万个观测值的数据集,并且我试图使用一个涉及 foreach 函数的不简单的例程来完成这项任务。我对大约 1/1000 的数据集进行了测试,耗时超过 20 分钟。使用您的解决方案,整个数据集需要一秒钟。我不能感谢你。 R 真的很棒,我迫不及待地想擅长它!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-05
  • 2023-04-09
  • 1970-01-01
相关资源
最近更新 更多