簡體   English   中英

按數字順序排列列名(cut2 - 括號)

[英]Putting column names (cut2 - brackets) in numerical order

我制作了一個具有重疊層的頻率表,導致數據如下:

dat <- structure(list(`[0,25)` = 5L, `[100,250)` = 43L, `[100,500)` = 0L, 
    `[1000,1000000]` = 20L, `[1000,1500)` = 0L, `[1500,3000)` = 0L, 
    `[25,100)` = 38L, `[25,50)` = 0L, `[250,500)` = 27L, `[3000,1000000]` = 0L, 
    `[50,100)` = 0L, `[500,1000)` = 44L, `[500,1000000]` = 0L), row.names = "Type_A", class = "data.frame")

方括號是dat的列名,按字母順序排列。 我需要它們按數字順序排列,但我發現這很棘手。

所需順序:

[0,25), [25,50), [25,100), [50,100), ..., [3000,1000000]

最好的方法是什么?

這是一個有點棘手但可能有用的方法:

ord <- gsub("\\[|\\]|\\)", "", colnames(dat)) %>% 
         strsplit(",") %>% 
         lapply(as.numeric) %>% 
         lapply(sum) %>% 
         unlist %>% 
         order()

colnames(dat)[ord]
# [1] "[0,25)"         "[25,50)"        "[25,100)"       "[50,100)"      
# [5] "[100,250)"      "[100,500)"      "[250,500)"      "[500,1000)"    
# [9] "[1000,1500)"    "[1500,3000)"    "[500,1000000]"  "[1000,1000000]"
# [13] "[3000,1000000]"

dat[ord]
#       [0,25) [25,50) [25,100) [50,100) [100,250) [100,500) #[250,500) [500,1000)
#Type_A      5       0       38        0        43         0        #27         44
#       [1000,1500) [1500,3000) [500,1000000] [1000,1000000] #[3000,1000000]
#Type_A           0           0             0             20              0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM