2011-02-02 123 views
2

我基本上試圖將無序數據變成長整型用於線性建模。根據兩個變量匹配數據框行(索引)

我有2個data.frames「REC」和「書」

在「書」中的每一行需要粘貼到的幾個「REC」行結束根據該行中的兩個變量:「MRN」和「COURSE」相匹配。

我曾嘗試以下,並就此向無濟於事變化:

i=1 
newlist=list() 
colnames(newlist)=colnames(book) 
for (i in 1:dim(rec)[1]) { 
    mrn=as.numeric(as.vector(rec$MRN[i])); 
    course=as.character(rec$COURSE[i]); 
get.vector<-as.vector(((as.numeric(as.vector(book$MRN))==mrn) & (as.character(book$COURSE)==course))) 
newlist[i]<-book[get.vector,] 
i=i+1; 
} 

如果任何人有

1)獲得)的任何建議,這個工作 2使其更加優雅(或者只是不笨拙)

如果我一直不清楚,我乞求你的赦免。

我明白我沒有結合上述的任何數據,我想如果我可以生成一個長格式data.frame我可以將它們都在我自己的

回答

7

聽起來像是你需要merge兩個數據幀。試試這個:

merge(rec, book, by = c('MRN', 'COURSE')) 

,做閱讀幫助merge(由R控制檯做?merge)關於如何合併這些更多的選擇。

2

我創建了一個簡單的例子,可幫你。在我來說,我想粘貼DF2的每一行中的DF1「價值」欄,根據變量X1和X2:

df1 <- read.table(textConnection(" 
x1 x2 value 
1 2 12 
1 3 56 
2 1 35 
2 2 68 
"),header=T) 

df2 <- read.table(textConnection(" 
test x1 x2 
1 1 2 
2 1 3 
3 2 1 
4 2 2 
5 1 2 
6 1 3 
7 2 1 
"),header=T) 

library(sqldf) 
sqldf("select df2.*, df1.value from df2 join df1 using(x1,x2)") 

    test x1 x2 value 
1 1 1 2 12 
2 2 1 3 56 
3 3 2 1 35 
4 4 2 2 68 
5 5 1 2 12 
6 6 1 3 56 
7 7 2 1 35 
+0

然後有一個很好的舊`merge(df1,df2)`...... :) – 2011-02-02 19:46:28

相關問題