根据所需方式对字符数据帧进行排序

时间:2017-07-07 10:53:35

标签: r

我有一个数据帧k,其中包含以下相同顺序的字符串:

6 to 12 months    
12 to 24 months    
36 to 60 months    
60 to 96 months    
0 to 6 months      
24 to 36 months    
96 to 120 months   
120 months & above.

当我应用sort命令时,它按整数值排序。例如。字符串120 months and above放在6-12 months之前。谁能告诉我如何使用一些R命令对它进行排序:

0 to 6 months      
6 to 12 months
12 to 24 months    
24 to 36 months
36 to 60 months
60 to 96 months
96 to 120 months   
120 months & above.

2 个答案:

答案 0 :(得分:0)

当自定义排序不起作用时,您需要manually specify the order。使用您指定的订单创建一个因子,并sort。即使数组不包含您按顺序提及的组,也可以正常工作。

col1 = c("6 to 12 months", 
        "12 to 24 months", 
        "36 to 60 months", 
        "60 to 96 months", 
        "0 to 6 months", 
        "24 to 36 months", 
        "96 to 120 months", 
        "120 months & above")

order <- c("0 to 6 months", 
         "6 to 12 months", 
         "12 to 24 months", 
         "24 to 36 months", 
         "36 to 60 months", 
         "60 to 96 months",
         "96 to 120 months",
         "120 months & above")
col2 <- factor(col1, levels = order)
sort(col2)

确保order包含数组中的所有可能值。此示例看起来非常简单,因为输入向量是唯一的。如果输入的长度为100,那么这8个可能的值就足够了。

如果还有更多此类分区,请使用此

names(sort(sapply(col1, function(x)
  as.integer(stringr::str_split(x, pattern = ' ')[[1]][1]))))

两种方法都提供相同的输出。我更喜欢第一种方法,因为它更不容易出错。

答案 1 :(得分:0)

这个怎么样:

button.addEventListener('click', (e) => { e.preventDefault(); this.method2(); });

我认为你可以将它缩放到任何大小的类别(只要字符串的第一部分遵循某种顺序)。