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