2016-06-28 18 views
0

結合數據幀我有兩個數據幀Rprogramming >>以特定的方式

數據幀1:

day <- c(0,3,6) 
score <- c(5,11,17) 
studentName <- c("Matt","Sam","Jeff") 
state <- c("MA","MD","MO") 
city <- c("Worcester","Silver Spring","Creve Couer") 
zipCode <- c(41441,20865,61341) 

dataFrame1 <- data.frame(day,score,studentName,state,city,zipCode) 

數據幀2:

day <- c(0,0.5,1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6) 
score <- c(5,6,7,8,9,10,11,12,13,14,15,16,17) 
studentName <- c(rep("Matt", 6),rep("Sam", 6),"Jeff") 

dataFrame2 <- data.frame(day,score,studentName) 

數據幀3:

dataFrame3 <- merge(dataFrame1,dataFrame2, all = TRUE, by = c("studentName","day","score")) 

數據幀3有NA,我想在程序上實現dataframe4的輸出。下面dataframe4的示例輸出:

這樣的
day <- c(0,0.5,1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6) 
score <- c(5,6,7,8,9,10,11,12,13,14,15,16,17) 
studentName <- c(rep("Matt", 6),rep("Sam", 6),"Jeff") 
state <- c(rep("MA", 6),rep("MD", 6),"MO") 
city <- c(rep("Worcester", 6),rep("Silver Spring", 6),"Creve Couer") 
zipCode <- c(rep(41441, 6),rep(20865, 6),61341) 

dataFrame4 <- data.frame(day,score,studentName,state,city,zipCode) 

回答

0

的一種方法,是使用sqldf

library(sqldf) 
sqldf(" select a.*, b.state, b.city , b.zipCode from dataframe2 a , dataframe1 b where a.studentName = b.studentName ") 
+0

不能使用外部庫。 – radhika

0
df4 <- merge(dataFrame2, dataFrame1[,-c(1:2)], by="studentName", all.x = T) 
df4[with(df4, order(day)), c(2,3,1,4:6)] 
相關問題