Tôi có một khung dữ liệu với mỗi hàng đại diện cho một chuỗi các trườngLàm cách nào để di chuyển các cột của một khung dữ liệu thành các hàng sau một vài cột đầu tiên?
edu <- read.table(header=TRUE, text="Elem Mid High
e1 m1 h1
e2 m2 h2
e1 m2 h2
e3 m1 h1")
Tôi muốn chuyển đổi này vào một danh sách cạnh
s1 s2
1 e1 m1
2 e2 m2
3 e1 m2
4 e3 m1
5 m1 h1
6 m2 h2
7 m2 h2
8 m1 h1
cho một đồ thị có hướng (thông qua các gói igraph) .
Đây là cách tôi làm điều đó:
e2m <- edu[,1:2]
m2h <- edu[,2:3]
colnames(e2m) <- c("s1", "s2")
colnames(m2h) <- c("s1", "s2")
schools <- rbind(e2m,m2e)
"trường học" chứa những gì tôi muốn, nhưng nó là lặp đi lặp lại và trở nên cồng kềnh nếu tôi muốn thêm một cột thứ tư (ví dụ "Uni"). Cách vectorized để làm điều này là gì?
Tôi có thể nói rằng đây là một câu hỏi lớn trong đó bạn (1) 'hỏi một question', (2)' cung cấp một nhỏ set' dữ liệu làm việc, (3) 'hiển thị kết quả mong muốn' và (4)' những gì bạn hiện đang làm.' +1 –
Tôi không có kỹ năng trong việc sử dụng nó, nhưng đây không phải là những gì 'melt' -' recast' làm gì? –
@Carl, tôi cũng nghĩ như vậy, nhưng không phải như vậy, ít nhất là không đơn giản. Lưu ý rằng cột đầu tiên của 'data.frame' đã chuyển đổi có cả cột đầu tiên và cột thứ hai từ' edu'. – Arun