R – 将多行连接在一起

我有一个3列和多行的数据框。 我想分裂的数据框,以便只有一个行,值是按顺序(基本上是一行csv)。

我的数据框是这样的:

**Subject Module ID** History WW2 1 English Literature 2 Maths Algebra 3 

我试图实现的是一行,看起来像这样,并按此顺序:

  History, WW2, 1, English, Literature, 2, Maths, Algebra, 3 

我可以使用excel进行剪切和粘贴,但想知道是否有一个快速的方法与R.

任何帮助将是伟大的! 谢谢。

使用与collapse paste来做到这一点。 unlist从你的数据unlist创build一个单独的向量,但是它是通过列来完成的,所以你需要先转换它。

 df <- read.table(textConnection("Subject Module ID History WW2 1 English Literature 2 Maths Algebra 3"), stringsAsFactors=FALSE, header=TRUE) > paste(unlist(t(df)), collapse=",") [1] "History,WW2,1,English,Literature,2,Maths,Algebra,3" 

编辑以添加您在评论中要求的dataframe版本…

 df1 <- read.csv(text=paste(unlist(t(df)), collapse=","), header=FALSE, stringsAsFactors=FALSE) names(df1) <- rep(names(df), nrow(df)) > df1 Subject Module ID Subject Module ID Subject Module ID 1 History WW2 1 English Literature 2 Maths Algebra 3 

这使得非唯一的列名称,这是不可取的。

 data<-data.frame(A=c(1:3),B=6:8,C=9:11) data # ABC # 1 1 6 9 # 2 2 7 10 # 3 3 8 11 paste(colnames(data),unlist(t(data)),collapse=",") # [1] "A 1,B 6,C 9,A 2,B 7,C 10,A 3,B 8,C 11" 

希望这可能有帮助。

如果你想保持标题,你可以试试这个:

  df <- read.table(textConnection(" Subject Module ID History WW2 1 English Literature 2 Maths Algebra 3"),stringsAsFactors=FALSE, header=TRUE) data.frame(t(unlist(df))) Subject1 Subject2 Subject3 Module1 Module2 Module3 ID1 ID2 ID3 1 History English Maths WW2 Literature Algebra 1 2 3