我有一个数据框,每一行代表一系列学校

edu <- read.table(header=TRUE, text="Elem Mid High
e1 m1 h1
e2 m2 h2
e1 m2 h2
e3 m1 h1")


我想将其转换为边缘列表

  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


有向图(通过igraph包)。

这是我的方法:

e2m <- edu[,1:2]
m2h <- edu[,2:3]
colnames(e2m) <- c("s1", "s2")
colnames(m2h) <- c("s1", "s2")
schools <- rbind(e2m,m2e)


“学校”包含了我想要的内容,但是如果要添加第四列(例如“ Uni”),它是反复进行的并且很麻烦。向量化的方法是什么?

最佳答案

这是一个可能的解决方案:

len <- seq_along(edu)
a <- head(len, -1)
b <- tail(len, -1)

data.frame(s1=as.character(unlist(edu[, a])), s2=as.character(unlist(edu[, b])))

关于r - 如何将数据框的列移到前几列之后的行中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14824495/

10-12 21:01