Junran Cao
Junran Cao

Reputation: 45

R - create a Panel dataset from 2 Cross sectional datasets

Could you please help me with the following task of creating a panel dataset from two cross-sectional datasets?

Specifically, a small portion of the cross-sectional datasets are:

1) - data1

  ID| Yr    | D | X
 -------------------
 1  | 2002  | F | 25    
 2  | 2002  | T | 27    

& 2) - data2

ID  | Yr   | D  | X 
---------------------
1   | 2003 | T  | 45    
2   | 2003 | F  | 35    

And would like to create a panel of the form:

ID  | Yr   |    D   | X 
----------------------- 
1   | 2002 |    F   | 25    
1   | 2003 |    T   | 45    
2   | 2002 |    T   | 27    
2   | 2003 |    F   | 35    

The codes I have tried so far are:

IDvec<-data1[,1]

ID_panel=c()
for (i in 1:length(IDvec)) {
   x<-rep(IDvec[i],2)
   ID_panel<-append(ID_panel,x)
}

Years_panel<-rep(2002:2003,length(IDvec))

But cannot quite figure out how to link the 3rd and 4th columns. Any help would be greatly appreciated. Thank you.

Upvotes: 1

Views: 1024

Answers (1)

neilfws
neilfws

Reputation: 33802

Assuming that you want to concatenate data frames, then order by ID and Yr. Here's a dplyr approach:

library(dplyr)
data1 %>%
  bind_rows(data2) %>%
  arrange(ID, Yr)

  ID   Yr D  X
1  1 2002 F 25
2  1 2003 T 45
3  2 2002 T 27
4  2 2003 F 35

Upvotes: 2

Related Questions