R: データセットを四分位数/十分位数に分割します。正しい方法は何ですか? [重複] 質問する

R: データセットを四分位数/十分位数に分割します。正しい方法は何ですか? [重複] 質問する

私は R について非常に初心者なので、データの望ましい操作を実現する方法についてのヒントが得られることを期待しています。

3 つの変数を持つデータの配列があります。

  gene_id       fpkm  meth_val
1 100629094     0.000 0.0063
2 100628995     0.000 0.0000
3 102655614   111.406 0.0021

fpkm に基づいて gene_ids を四分位数または十分位数に階層化した後、平均 meth_val をプロットしたいと思います。

データをデータフレームにロードしたら...

data <- read.delim("myfile.tsv", sep='\t')

fpkm の十分位数は次のようにして決定できます。

quantile(data$fpkm, prob = seq(0, 1, length = 11), type = 5

その結果

          0%          10%          20%          30%          40%          50%
0.000000e+00 9.783032e-01 7.566164e+00 3.667630e+01 1.379986e+02 3.076280e+02
         60%          70%          80%          90%         100%
5.470552e+02 8.875592e+02 1.486200e+03 2.974264e+03 1.958740e+05

そこから、fpkm_val がこれらの十分位数のいずれかに当てはまるかどうかに基づいて、データフレームを基本的に 10 のグループに分割したいと思います。次に、ggplot で各十分位数の meth_val をボックス プロットとしてプロットし、十分位数全体で統計テストを実行したいと思います。

私が本当に困っているのは、データセットを適切に分割する方法です。どんな助けでも大歓迎です!

本当にありがとう!

ベストアンサー1

もう一つの方法はntile()ですdplyr

library(tidyverse)

foo <- data.frame(a = 1:100,
                  b = runif(100, 50, 200),
                  stringsAsFactors = FALSE)

foo %>%
    mutate(quantile = ntile(b, 10))

#  a         b quantile
#1 1  93.94754        2
#2 2 172.51323        8
#3 3  99.79261        3
#4 4  81.55288        2
#5 5 116.59942        5
#6 6 128.75947        6

おすすめ記事