2011-02-02 86 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

相关问题