如何对整个值大于等于0.2的列进行排序?

时间:2017-06-15 11:11:10

标签: r sorting dataframe

我的数据框如下:

df:

Sample  Region4 Region1 Region5 Region3 Region2 Type
T1       0       0.289    0.378   0       1      K
T2       0       0.167     0     0.875  0.389    K
T3    0.186     0.12345    0      0     0.187    K
T4   0.11234     0.1789    0     0.457  0.786    L
T5    0.2347     0.2567    0      0       0      L
T6   0.28769       0     0.123   0.1987 0.1565   L
T7    0.142        0     0.1987   0       0      M
T8       0       0.1256  0.123   0.129   0.111   M
T9    0.187      0.987     0     0.237   0.783   M

如何使用值&gt; = 0.2对列进行排序,不应对值<0.2进行排序。

我试过这种方式。但是没有工作

sort(apply(df[grepl("Region",length(colnames(df)], 2, function(x) 
 any(x >= 0.2)),decreasing=TRUE)

1 个答案:

答案 0 :(得分:2)

我们可以在&#39;地区&#39;上使用lapply循环播放列,创建逻辑向量(&#39; i1&#39;),使用它来对值进行子集化order并更新它

nm1 <- grepl("Region",names(df1))
df1[nm1] <- lapply(df1[nm1], function(x) {
         i1 <- x >= 0.2 
         x[i1] <- x[i1][order(x[i1], decreasing = TRUE)]
         x})