如果您有很多的列
df[, c(1, order(as.numeric(gsub("[^0-9]+", "", names(df)[-1]))) + 1)]
name stock_1 stock_2 stock_11
1 main1 4 1 0
2 main2 2 3 2
3 main3 4 8 4
4 main4 7 3 7
當您在評論中提到,這個解決方案仍然有效,如果你可以接受訂單的價格和庫存不一致。這裏有一個例子:
# Example
df
name price_2 price_1 stock_2 stock_1 stock_11 price_11
1 main1 1 4 1 4 0 0
2 main2 3 2 3 2 2 2
3 main3 8 4 8 4 4 4
4 main4 3 7 3 7 7 7
# Solution
# Note that the order of stock and price is not consistent
df[, c(1, order(as.numeric(gsub("[^0-9]+", "", names(df)[-1]))) + 1)]
name price_1 stock_1 price_2 stock_2 stock_11 price_11
1 main1 4 4 1 1 0 0
2 main2 2 2 3 3 2 2
3 main3 4 4 8 8 4 4
4 main4 7 7 3 3 7 7
這是解決一個辦法:
df1 <- df[c(names(df)[1], sort(names(df)[-1], decreasing=TRUE))]
df1[, c(1, order(as.numeric(gsub("[^0-9]+", "", names(df1)[-1]))) + 1)]
name stock_1 price_1 stock_2 price_2 stock_11 price_11
main1 4 4 1 1 0 0
main2 2 2 3 3 2 2
main3 4 4 8 8 4 4
main4 7 7 3 3 7 7
謝謝你,如果作品完美。有一個問題,如果它很簡單,可以將它用於像stock_1 price_1 stock_2 price_2這樣的列。我的意思是根據數量進行訂購,我知道colmuns的主要部分是stock_和price_? – Jake
您是否需要維護股票和價格的訂單?例如,股票總是在價格之後。 – JasonWang
是的,這是訂單 – Jake