2013-07-11 242 views
1

訂購特定瓦爾我有變量阿爾法通祖魯一個數據幀,但不是在任何特定的順序(例如布拉沃,揚克,查理,等)。我想按字母順序排列威爾斯三角洲威士忌(20個變種),並保持原狀。R:在數據幀

例如無序DF colnames(操作前):Zulu, Bravo, Alpha, Delta, Kilo, Tango, .... Whiskey, Yankee, X-Ray

例如訂購DF colnames(手術後):Zulu, Bravo, Alpha, #Start ordered section# Delta, Echo, Fox, Golf, .... Whiskey, #End ordered section# Yankee, X-Ray

我想我接近使用order命令,但我失去了一些東西......

DF <- DF[ , order(which(names(DF) == 'Delta') : which(names(mitch) == 'Whiskey')) ]

+0

你能提供一個例子。既然變量沒有特定的順序,那麼一旦你訂購了一個子集,它就不清楚你的意思了。 讓其從 「A」 到 「G」 說 - > F,C,A,d,E,B,G 你想從B至F排序,所以最終的順序應該看怎麼樣? –

+0

增加了一個例子,希望是說明性的。用你的例子:'f,c,a,d,e,b,l,k,m,r,g'成爲'f,c,a,d,e,b,g,k,l,m,r '。該列的第一個向量('f-e')保持不變,但'b'通過'g'變成'b'通過'r',其中'g'處於其正確的字母位置。 – NiuBiBang

回答

1

下面是我工作:

# Create list of variables to sort 
names.DF <- names(DF) 

# Find just the variables between the 4th variable ('Delta') and the 23rd variable ('Whiskey') 
ord <- names.DF %in% sort(names.DF)[(which(names.DF=='Delta')):(which(names.DF=='Whiskey'))] 

# Replace just the desired variables with the properly sorted variables 
names.DF[ord] <- sort(names.DF[ord]) 

# Use the sorted list to sort the variables in the dataframe 
DF <- DF[,names.DF] 
只要你想

該解決方案將責令變量。它還可以處理Alpha,Bravo,Charlie,X-ray,Yankee和Zulu與您想要訂購的變量混合在一起的情況,而不僅僅是兩端。例如,

Zulu, Alpha, X-ray, Echo, Whiskey, Delta, Golf, Bravo, Charlie, Yankee

成爲

Zulu, Alpha, X-ray, Delta, Echo, Golf, Whiskey, Bravo, Charlie, Yankee

Echo, Zulu, Whiskey, Delta, Alpha, X-ray, Bravo, Charlie, Golf, Yankee

成爲

Delta, Zulu, Echo, Golf, Alpha, X-ray, Bravo, Charlie, Whiskey, Yankee

+0

當我嘗試第二行代碼時,出現「參數長度爲0」的錯誤......我的數據集必須存在問題。 – NiuBiBang

+0

「Delta」和「Whiskey」可能不完全一致嗎?不同的情況下,或不同的拼寫?可以使用'[(其(在toupper(names.DF)== 'DELTA')):(其中(在toupper(names.DF)== 'WHISKEY'))]',或者只是代替該部分與[4: 23]如果你知道你想使用26和24中的第4個和第23個有序變量。 –