根据另一列中的所有唯一值列出所有行和列中的值,以查找每个唯一值的第 80 个百分位值

问题描述 投票:0回答:1

我有一个 100 行 20 列的数据框。第 1 列包含可分组的 ID。第 2 至 20 列包含整数值。目的是考虑第 2 列至第 20 列中的所有值,找到第 1 列中每个唯一 ID 的 75 个百分位值。

我尝试了什么?

我使用了以下链接中的代码,使用aggregate()函数。

aggregate(GO~GeneID,data=df,FUN = function(x) paste0(x,collapse = '; ')) 

如何根据R中的分组值列出列中的行值?

但是,您可以使用此代码为第 1 列中的所有唯一 ID 一次创建一列的值列表。因此,导出时值列表的第 80 个百分位数只是该列中值的第 80 个百分位数。我想要的是第 1 列中每个唯一 ID 的所有列中所有值的 80%。

r aggregate quantile
1个回答
0
投票

使用

data.table
进行
.SD
分组操作,让操作变得简单。

library(data.table)

setDT(df)[,.(p75 = quantile(unlist(.SD), 0.75)), keyby = id]
#>     id    p75
#>  1:  1 797.00
#>  2:  2 786.00
#>  3:  3 753.75
#>  4:  4 724.50
#>  5:  5 793.75
#>  6:  6 781.75
#>  7:  7 808.00
#>  8:  8 788.50
#>  9:  9 761.00
#> 10: 10 784.00

数据:

set.seed(1935200967)

df <- cbind(
  data.frame(id = sample(10, 100, 1)),
  matrix(sample(1e3, 1900, 1), 100)
)
© www.soinside.com 2019 - 2024. All rights reserved.