R 根据两个变量匹配数据帧行(索引)
我基本上是在尝试将杂乱无章的数据转换成线性建模的长格式 我有两个数据帧“rec”和“book” “book”中的每一行都需要根据行中两个匹配的变量“MRN”和“COURSE”粘贴到“rec”的几行末尾 我尝试了以下方法,但均无效:R 根据两个变量匹配数据帧行(索引),r,join,merge,dataframe,R,Join,Merge,Dataframe,我基本上是在尝试将杂乱无章的数据转换成线性建模的长格式 我有两个数据帧“rec”和“book” “book”中的每一行都需要根据行中两个匹配的变量“MRN”和“COURSE”粘贴到“rec”的几行末尾 我尝试了以下方法,但均无效: i=1 newlist=list() colnames(newlist)=colnames(book) for ( i in 1:dim(rec)[1]) { mrn=as.numeric(as.vector(rec$MRN[i])); 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;
}
i=1
newlist=list()
colnames(newlist)=colnames(book)
对于(1中的i:dim(rec)[1]){
mrn=as.numeric(as.vector(rec$mrn[i]);
course=as.character(rec$course[i]);
get.vector我创建了一个简单的示例,可能会对您有所帮助。在我的示例中,我希望根据变量x1和x2,在df2的每一行中粘贴来自df1的“value”列:
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
df1听起来您需要合并这两个数据帧。请尝试以下操作:
merge(rec, book, by = c('MRN', 'COURSE'))
请阅读merge
(通过在R控制台上执行?merge
)的帮助,以了解有关如何合并这些内容的更多选项。最后一条语句可以缩短为sqldf(“使用(x1,x2)从df2、df1中选择*)
。m1