代码之家  ›  专栏  ›  技术社区  ›  Alex Nesta

R熔化数据帧秩

  •  1
  • Alex Nesta  · 技术社区  · 7 年前

    我有一个数据框,看起来像这样:

    > head(female.meth.ordered)
            Var1                                     Var2      value RankMeth
    1 cg25296477 ES__WA09_passage39_Female____87.1429.1.1 0.85581970        1
    2 cg01003813 ES__WA09_passage39_Female____87.1429.1.1 0.91677790        1
    3 cg13176022 ES__WA09_passage39_Female____87.1429.1.1 0.04714496        1
    4 cg26484667 ES__WA09_passage39_Female____87.1429.1.1 0.85785770        1
    5 cg21028156 ES__WA09_passage39_Female____87.1429.1.1 0.04065772        1
    6 cg11503671 ES__WA09_passage39_Female____87.1429.1.1 0.82933710        1
    

    此数据帧有606528行。 行Var2包含54个唯一的示例名称。

    > unique(female.meth.ordered$Var2)
    
    [1] ES__WA09_passage39_Female____87.1429.1.1                   
     [2] ES__WA09_passage39_Female____87.1429.2.1                   
     [3] ES__MEL4_passage35_Female____127.378.3.1                   
     [4] ES__CSC14_passage29_Female____197.1296.1.2                 
     [5] ES__CM6_passage19_Female____244.622.1.1                    
     [6] ES__HES2_passage105_Female____32.135.4.1  
    54 Levels: ES.parthenote__LLC15_passage45_Female____317.905.1.1 ...
    

    我想为“RankMeth”列指定“Var2”列中前10个唯一点击的排名为1。然后为“RankMeth”列中的“Var2”列中接下来的10个唯一点击指定2的排名。依次为3、4、5级。

    1 回复  |  直到 7 年前
        1
  •  2
  •   MKR    7 年前

    最简单的解决方案如下:

    方法:

    采取独特的 Var2 按除法排列 row_number 具有 10 . 这将提供 Var2型 排名在 1-10 . 说这是 meth_rank .

    参加 meth\u等级 “女性”。冰毒。命令 to find out corresponding MethRank`用于行。

    meth_rank <- unique(female.meth.ordered$Var2) %>% as.data.frame() %>% 
         mutate(RankMeth = ceiling(row_number()/10))
    
    colnames(meth_rank) <- c("Var2", "RankMeth")
    #Join meth_rank with female.meth.ordered to populate rank.
    female.meth.ordered %>% 
      select(-RankMeth) %>%
      inner_join(meth_rank, by="Var2") 
    #Result will be generated with headings as
    # Var1        Var2      value RankMeth