繁体   English   中英

在R中的数据表中找到前1个百分点

[英]finding top 1 percentile in datatable in r

我有一个数据表

     sample1 sample2 sample3

fruit1    10      20      30

fruit2     1      5       6

fruit3     3      7       8

etc.

我想在R中的每个样本中找到水果的前1个百分位数(根据每个样本中的数目)。 有没有简单的方法可以做到这一点?

可以lapply在你的数据,并为每一列,子集的rownames df与作为逻辑矢量TRUE时在列中的相应值在1个百分位数(即高于100 - 1百分位数)。

创建示例数据

set.seed(2019)
df <- as.data.frame(matrix(sample(1e4, replace = T), 1e3, 10))
names(df) <- paste0('sample', seq_along(df))
rownames(df) <- paste0('fruit', seq_len(nrow(df)))

上述步骤:

lapply(df, function(x) rownames(df)[x > quantile(x, (100 - 1)/100)])

# $`sample1`
#  [1] "fruit57"  "fruit76"  "fruit149" "fruit471" "fruit520" "fruit682" "fruit805"
#  [8] "fruit949" "fruit966" "fruit975"
# 
# $sample2
#  [1] "fruit49"  "fruit109" "fruit232" "fruit274" "fruit312" "fruit795" "fruit883"
#  [8] "fruit884" "fruit955" "fruit958"
# 
# $sample3
#  [1] "fruit37"  "fruit189" "fruit231" "fruit256" "fruit473" "fruit654" "fruit729"
#  [8] "fruit742" "fruit820" "fruit979"
# 
# ...

假设您的数据框被称为“水果”

fruit <- fruit[order(fruit$sample1,decreasing = TRUE)]

top.1.percent <- fruit[1:length(fruit$sample1)/100,]

这应该为sample1达到目的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM