0
我經常需要在數據幀之間傳輸數據。通常來自數據來源的數據幀是數據所要傳送到的數據幀的較小子集。在數據幀之間傳輸數據
可以說我有這個數據幀:
df <- data.frame(ID = c(1,3,6,9), variable = c(-0.1, 0, 0, 0.1))
ID variable
1 1 -0.1
2 3 0.0
3 6 0.0
4 9 0.1
我需要從df
轉移variable
到sleep
,但只能在行,其中ID
在兩個df
和sleep
相同。
要做到這一點,我通常使用一個循環是這樣的:
sleep$variable <- NA
for (i in seq_along(sleep$ID)) {
x <- which(sleep$ID == df$ID[i])
sleep$variable[x] <- df$variable[i]
}
sleep
extra group ID variable
1 0.7 1 1 -0.1
2 -1.6 1 2 NA
3 -0.2 1 3 0.0
4 -1.2 1 4 NA
5 -0.1 1 5 NA
6 3.4 1 6 0.0
7 3.7 1 7 NA
8 0.8 1 8 NA
9 0.0 1 9 0.1
10 2.0 1 10 NA
11 1.9 2 1 -0.1
12 0.8 2 2 NA
13 1.1 2 3 0.0
14 0.1 2 4 NA
15 -0.1 2 5 NA
16 4.4 2 6 0.0
17 5.5 2 7 NA
18 1.6 2 8 NA
19 4.6 2 9 0.1
20 3.4 2 10 NA
我正在尋找一個函數,將得到相同的結果,但需要更少的代碼。理想情況下,我希望該函數只接受3個參數:數據來自的向量,數據要去的向量以及用於匹配兩個數據幀中的行的向量。
R中有這樣一個函數嗎?或者,任何人都可以提供這樣的功能?
你看'merge()'嗎? –
有很多不同的方法可以在R中做到這一點。[問題/答案](http://stackoverflow.com/questions/4322219/whats-the-fastest-way-to-merge-join-data-frames-in -r)對各種方法進行了很好的比較。 – jlhoward