2011-04-11 189 views
4

我有什么似乎是一个简单的要求,但我似乎无法达到预期的结果。我的数据帧是相当大的,所以我会给一个截图:enter image description here基于另一个数据框创建列

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

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

+5

屏幕截图?你在跟我开玩笑吗? ;-)认真地说,只需将'head(ps2c)'和'head(present2)'的输出粘贴到Q中,选择粘贴的代码/输出,然后单击工具栏中的代码按钮(看起来像大括号'{}')或按'Ctrl + k'使您的代码格式适当。 – 2011-04-11 09:52:02

+1

我的数据框很大,但我会牢记你的建议。 – 2011-04-11 10:02:47

+1

但head()只显示前几行 - 我的观点是,如果你能显示截图,你可以显示代码和'head()'的输出。 – 2011-04-11 10:45:50

回答

8

你没有提供的测试数据,但类似以下可能的工作:

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

完美的作品。非常感谢您的帮助。 – 2011-04-11 09:28:16

+1

我正在使用一个包含7200万个观察值的数据集,并且我正在尝试使用涉及foreach函数的非直观例程来完成这项任务。我测试了它大约1/1000的数据集,花了20多分钟。用你的解决方案,整个数据集花费了一秒钟。我不能够感谢你。 R真的很厉害,我迫不及待地想要做到! – Vivi 2012-06-22 19:27:58