【问题标题】:Rank the dataframe values in R对 R 中的数据框值进行排名
【发布时间】:2017-08-15 02:45:15
【问题描述】:

我想获取数据框中一列中前 5 个最高值的行号,并在另一个数据框中的相同行号上添加值 100,并将其他值保留为 0。

我知道如何使用 order() 函数对数据框中的列进行排序/排序。

df=data.frame(a=c(345,948,290,189,3848,302,384,456,383,201,35,346,1.46,4.66,3,5,63,43,6432,4336,345,354,1245,342,523,743,248,932.5))

例如,df[order(-df$a),] 会导致

6432.00 4336.00 3848.00 1245.00  948.00  932.50  743.00  523.00  456.00  384.00  383.00  354.00 346.00  345.00  345.00  342.00  302.00  290.00  248.00  201.00  189.00   63.00   43.00   35.00   5.00    4.66    3.00    1.46 

但是,我无法满足我的具体要求。

我希望将 df1 视为

0 100 0 0 100 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 0 100 0 0 0 0 0

【问题讨论】:

    标签: r sorting rank


    【解决方案1】:
    df$b <- ifelse(df$a %in% sort(df$a, T)[1:5], 100, 0)
    

    【讨论】:

      【解决方案2】:

      我们可以使用rank 函数:

      df$b <- (rank(-df$a) <= 5) * 100
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-29
        • 2016-07-28
        • 1970-01-01
        • 1970-01-01
        • 2018-10-17
        • 1970-01-01
        相关资源
        最近更新 更多