2013-08-29 64 views
0

我有2個數據幀,其行數不同(A有55,B有41)。我想從數據幀B中取出Py值並將它們放入與「鏈接」對應的A $ Py中。將數值輸入到長度較長的數據幀中

我試圖

link.list <- A$Link 
for(i in 1:length(link.list)){ 
    A$Py[i] <- B[which(B$Link==link.list[i]), "Py"] 
}  

但得到:

Error in A$Py[i] <- B[which(B$Link == link.list[i]), "Py"] : 
replacement has length zero 

我認爲當有一個$鏈接,是不是在B.任何解決這個問題的思路被觸發這個錯誤? 感謝

數據幀:

Link VU Py 
1 DVH1-1 1 NA 
2 DVH1-10 9 NA 
3 DVH1-2 1 NA 
4 DVH1-3 1 NA 
5 DVH1-4 9 NA 
6 DVH1-5 9 NA 
7 DVH1-6 1 NA 
8 DVH1-7 1 NA 
9 DVH1-8 10 NA 
10 DVH1-9 10 NA 
11 DVH2-1 2 NA 
12 DVH2-2 1 NA 
13 DVH2-3 9 NA 
14 DVH2-4 9 NA 
15 DVH2-5 10 NA 
16 DVH2-6 9 NA 
17 DVH2-7 4 NA 
18 DVH2-8 9 NA 
19 DVH3-1 1 NA 
20 DVH3-2 12 NA 
21 DVH3-3 12 NA 
22 DWH1-1 4 NA 
23 DWH1-10 8 NA 
24 DWH1-2 4 NA 
25 DWH1-3 4 NA 
26 DWH1-4 8 NA 
27 DWH1-5 8 NA 
28 DWH1-6 4 NA 
29 DWH1-7 4 NA 
30 DWH1-8 9 NA 
31 DWH1-9 9 NA 
32 DWH2-1 4 NA 
33 DWH2-2 4 NA 
34 DWH2-3 8 NA 
35 DWH2-4 8 NA 
36 DWH2-5 8 NA 
37 DWH2-6 8 NA 
38 DWH2-7 7 NA 
39 DWH2-8 5 NA 
40 DWH3-1 3 NA 
41 DWH3-2 49 NA 
42 DWH3-3 0 NA 
43 MH1-1 0 NA 
44 MH1-2 1 NA 
45 MH1-3 1 NA 
46 MH1-4 1 NA 
47 MH1-5 1 NA 
48 UH1-1 17 NA 
49 UH1-2 17 NA 
50 UH1-3 17 NA 
51 UH1-4 19 NA 
52 UH2-1 4 NA 
53 UH2-2 15 NA 
54 UH3-1 24 NA 
55 UH3-2 25 NA 

數據幀B:

Link Py 
1 DVH1-1 0 
2 DVH1-10 4 
3 DVH1-2 0 
4 DVH1-3 14 
5 DVH1-4 0 
6 DVH1-5 2 
7 DVH1-6 12 
8 DVH1-7 11 
9 DVH1-8 9 
10 DVH1-9 9 
11 DVH2-1 0 
12 DVH2-2 14 
13 DVH2-3 3 
14 DVH2-4 0 
15 DVH2-5 10 
16 DVH2-6 0 
17 DVH2-7 2 
18 DVH2-8 4 
19 DVH3-1 16 
20 DVH3-3 8 
21 DWH1-1 6 
22 DWH1-10 2 
23 DWH1-2 0 
24 DWH1-3 7 
25 DWH1-5 0 
26 DWH1-6 12 
27 DWH1-7 10 
28 DWH1-8 0 
29 DWH1-9 3 
30 DWH2-1 0 
31 DWH2-2 10 
32 DWH2-7 0 
33 DWH2-8 9 
34 DWH3-1 0 
35 DWH3-2 0 
36 MH1-1 0 
37 UH1-3 6 
38 UH1-4 4 
39 UH2-1 0 
40 UH2-2 9 
41 UH3-2 4 

回答

3

使用mergeLink合併,all.x將返回所有行的x(你的情況x= A)。

我只通過了A前兩列,如A$pY在你的例子都NA

merge(A[,1:2],B,by='Link', all.x = TRUE) 
+0

那偉大的工作。謝謝! – EricaO

0
> head(a) 
    X Link VU Py 
1 1 DVH1-1 1 NA 
2 2 DVH1-10 9 NA 
3 3 DVH1-2 1 NA 
4 4 DVH1-3 1 NA 
5 5 DVH1-4 9 NA 
6 6 DVH1-5 9 NA 

> head(b) 
    X Link Py 
1 1 DVH1-1 0 
2 2 DVH1-10 4 
3 3 DVH1-2 0 
4 4 DVH1-3 14 
5 5 DVH1-4 0 
6 6 DVH1-5 2 


a[a$Link %in% b$Link,5]<-b[a$Link %in% b$Link,3] 
names(a)[5]<-"Py1" 
> head(a) 
    X Link VU Py Py1 
1 1 DVH1-1 1 NA 0 
2 2 DVH1-10 9 NA 4 
3 3 DVH1-2 1 NA 0 
4 4 DVH1-3 1 NA 14 
5 5 DVH1-4 9 NA 0 
6 6 DVH1-5 9 NA 2