This question already has answers here:
How to quickly form groups (quartiles, deciles, etc) by ordering column(s) in a data frame
(10个回答)
5年前关闭。
我对R非常陌生,所以希望我能对如何实现所需的数据操作有所了解。
我有一个带有三个变量的数据数组。
在将基于fpkm的gene_ids分层为四分位数或十分位数后,我想绘制平均meth_val。
一旦我将数据加载到数据框中...
我可以使用以下方法确定fpkm的十分位数:
产生
从那里,我想根据fpkm_val是否适合这些十分之一来将数据帧大致分为10组。然后,我想在ggplot中将每个十分位的meth_val绘制为箱形图,并在十分位上执行统计测试。
我真正坚持的主要事情是如何以正确的方式拆分数据集。任何帮助将不胜感激!
谢谢一群!
(10个回答)
5年前关闭。
我对R非常陌生,所以希望我能对如何实现所需的数据操作有所了解。
我有一个带有三个变量的数据数组。
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绘制为箱形图,并在十分位上执行统计测试。
我真正坚持的主要事情是如何以正确的方式拆分数据集。任何帮助将不胜感激!
谢谢一群!
最佳答案
另一种方法是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
关于r - R:将数据集拆分为四分位数/十分位数。正确的方法是什么? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26273892/
10-12 17:55