2011-04-11 182 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