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