2016-02-19 34 views
0

有沒有一種方法可以使用R對多個列中的值進行排序併合併到一個列中?有沒有辦法使用R對多個列中的值進行排序併合併到一個列中?

例如:如果我有如下的數據幀:

 [1] [2] [3] 
[1] 2 bb cat 
[2] 3 cc bat 
[3] 5 xx sat 

欲編寫創建一個新的列,所述第一3個值進行排序的代碼,然後將它們組合成一個逗號分隔值

期望輸出:

 [1] [2] [3] [4] 
[1] 2 bb cat 2,bb,cat 
[2] 3 cc bat 3,bat,cc 
[3] 5 xx sat 5,sat,xx 
+0

您輸入的數據框看起來更像是一個向量。很難看出這是如何組織的。你可以插入data.frame的'dput'嗎?例如,輸入(YOUR_DATA_FRAME_NAME)' – maloneypatr

+0

我已經更好地格式化問題了。謝謝! – starter

回答

1

這是你可以做什麼:

m<-(transpose(data.frame(apply(df, 1, sort)))) ## Sort the dataframe, transpose it back to normal 
m<-data.frame(d=m$V1, a=m$V2, t=m$V3) #Rename the columns 
cols <- c('d','a','t') #select the columns you want to paste together 
m$x <- do.call(paste, c(m[cols], sep=",")) #create the new column with pasted columns 

m 

d a t  x 
1 2 bb cat 2,bb,cat 
2 3 bat cc 3,bat,cc 
3 5 sat xx 5,sat,xx 
+0

您的數據框列以前是'd','a'和't'。您現在改變了您的Q – MaxPD

+0

謝謝MaxPD。這工作。 – starter

+0

下面是我的命令: d = c(2,3,5) a = c(「bb」,「cc」,「xx」) t = c(「cat」,「bat」,「sat 「) df = data.frame(d,a,t) m < - (t(data.frame(apply(df,1,sort))))##對數據幀進行排序,轉置爲正常 (m) - 數據幀(m) colnames(m)<-c(「d」,「a」,「t」) cols <-c('d','a','t') #選擇要粘貼在一起的列 m [cols] m $ x < - do.call(paste,c(m [cols],sep =「,」))#用粘貼的列創建新列 df < - cbind(df,m $ x): – starter

相關問題