2011-02-02 65 views
0

假設我有兩個類似的data.framesR:總結dataframes

x1 <- data.frame(letters[1:26],1:26,1:26) 
x2 <- data.frame(letters[1:26],1:26,1:26) 

我將如何創建,增加了每個數據幀的第2列在一起,新的數據幀,並且每個數據幀的第三列在一起。

以x3 [2] = C(2,4,6,8,...)?

+0

`X3 <-data.frame(X1 [[1]] + X2 [[1]],X1 [[2]] + X2 [[2]])`或需要通用的解決方案? – Marek 2011-02-02 09:32:46

回答

2

你有這個想法?

x1[2]+x2[3] 
+0

哈哈,我只是砸到自己的臉。我爲什麼不試試! – 2011-02-02 10:17:15

1

你想:

> x3 <- data.frame(A = letters, S2 = x1[,2] + x2[,2], S3 = x1[,3] + x2[,3]) 
> head(x3) 
    A S2 S3 
1 a 2 2 
2 b 4 4 
3 c 6 6 
4 d 8 8 
5 e 10 10 
6 f 12 12 

如果是這樣,你想要一個更通用的解決方案,或許考慮mapply

> head(mapply(`+`, x1[,2:3], x2[2:3])) 
    X1.26 X1.26.1 
[1,]  2  2 
[2,]  4  4 
[3,]  6  6 
[4,]  8  8 
[5,] 10  10 
[6,] 12  12 

使用這個來構建與新的數據幀第一列完整,我們有:

> x3 <- data.frame(letters, mapply(`+`, x1[,2:3], x2[2:3])) 
> head(x3) 
    letters X1.26 X1.26.1 
1  a  2  2 
2  b  4  4 
3  c  6  6 
4  d  8  8 
5  e 10  10 
6  f 12  12