R 仅显示0-90%或0-95%的百分位数

R 仅显示0-90%或0-95%的百分位数,r,statistics,R,Statistics,这是我的代码和绘图结果,由于一些异常值,x轴非常长。是否有一种简单的方法,我可以通过R中的0-90%或0-95%百分位数过滤df$foo,这样我就可以只绘制正常值?谢谢 df <- read.csv('~/Downloads/foo.tsv', sep='\t', header=F, stringsAsFactors=FALSE) names(df) <- c('a', 'foo', 'goo') df$foo <- as.numeric(df$foo) goodValue &

这是我的代码和绘图结果,由于一些异常值,x轴非常长。是否有一种简单的方法,我可以通过R中的0-90%或0-95%百分位数过滤
df$foo
,这样我就可以只绘制正常值?谢谢

df <- read.csv('~/Downloads/foo.tsv', sep='\t', header=F, stringsAsFactors=FALSE)
names(df) <- c('a', 'foo', 'goo')
df$foo <- as.numeric(df$foo)
goodValue <- df$foo
summary(goodValue)
hist(goodValue,main="Distribution",xlab="foo",breaks=20)

df也许这就是你要找的

a = c(rnorm(99), 50) #create some data 
quant <- as.numeric(quantile(a, c(0, 0.9))) #get 0 and 0.9 quantile
hist(a[a > quant[1] & a < quant[2]]) #histogram only data within these bounds
a=c(rnorm(99),50)#创建一些数据
定量定量[1]&a
也许这就是你要找的

a = c(rnorm(99), 50) #create some data 
quant <- as.numeric(quantile(a, c(0, 0.9))) #get 0 and 0.9 quantile
hist(a[a > quant[1] & a < quant[2]]) #histogram only data within these bounds
a=c(rnorm(99),50)#创建一些数据
定量定量[1]&a
假设您想检查钻石。(我没有你的数据)

您可能会决定检查数据的小数点,因为尾部概率对您不感兴趣,您可能会丢弃最上面的小数点。你可以这样做,用一个自由标度,这样你就可以看到在每十分之一的范围内发生了什么

diamonds %>% mutate(ntile = ntile(price, 10)) %>% 
  filter(ntile < 10) %>%
  ggplot() + geom_histogram(aes(x = price)) + 
  facet_wrap(~ntile, scales = "free_x") 
diamonds%>%变异(ntile=ntile(价格,10))%>%
过滤器(总重量<10)%>%
ggplot()+geom_直方图(aes(x=价格))+
镶嵌面包裹(~antile,scales=“free_x”)
但要小心尽管以更精细的粒度查看数据有其好处,但请注意,您几乎无法判断数据大致呈指数分布(与大宗商品价格数据通常一样,具有厚尾)


假设您想检查钻石。(我没有你的数据)

您可能会决定检查数据的小数点,因为尾部概率对您不感兴趣,您可能会丢弃最上面的小数点。你可以这样做,用一个自由标度,这样你就可以看到在每十分之一的范围内发生了什么

diamonds %>% mutate(ntile = ntile(price, 10)) %>% 
  filter(ntile < 10) %>%
  ggplot() + geom_histogram(aes(x = price)) + 
  facet_wrap(~ntile, scales = "free_x") 
diamonds%>%变异(ntile=ntile(价格,10))%>%
过滤器(总重量<10)%>%
ggplot()+geom_直方图(aes(x=价格))+
镶嵌面包裹(~antile,scales=“free_x”)
但要小心尽管以更精细的粒度查看数据有其好处,但请注意,您几乎无法判断数据大致呈指数分布(与大宗商品价格数据通常一样,具有厚尾)


函数
%%>%
是由
dplyr
包导入的
magrittr
包中的一个特殊函数。它意味着从
%%>%%
之前获取前一个函数,并将其作为
%%>%%
之后的前一个函数的第一个参数。例如,在本例中,它将钻石数据集作为第一个参数提供给
mutate
函数,该函数将
.data
作为第一个参数。它可以被读取为“and then”,例如,take diamonds”,然后“添加一列,指定价格是哪个小数点”,然后“删除最大的小数点”,然后”将其绘制为沿自由x轴的直方图。不同之处在于,删除10%的异常值不会对直方图造成太大的更改,因此不会丢失太多的数据结构。分位数计算分位数的数值,过滤器是一个函数,它给出一个逻辑表达式,选择与
TRUE
匹配的行。在这种情况下,它选择不在前十分位的数据。在另一个答案中,代码中执行此操作的部分是最后一行的
hist()
中的内容。您为什么不读一下这个小插曲呢。在不到500个字符的时间里,它会比我做的更公正。函数
%%>%%
是由
dplyr
包导入的
magrittr
包中的一个特殊函数。它意味着从
%%>%%
之前获取前一个函数,并将其作为
%%>%%
之后的前一个函数的第一个参数。例如,在本例中,它将钻石数据集作为第一个参数提供给
mutate
函数,该函数将
.data
作为第一个参数。它可以被读取为“and then”,例如,take diamonds”,然后“添加一列,指定价格是哪个小数点”,然后“删除最大的小数点”,然后”将其绘制为沿自由x轴的直方图。不同之处在于,删除10%的异常值不会对直方图造成太大的更改,因此不会丢失太多的数据结构。分位数计算分位数的数值,过滤器是一个函数,它给出一个逻辑表达式,选择与
TRUE
匹配的行。在这种情况下,它选择不在前十分位的数据。在另一个答案中,代码中执行此操作的部分是最后一行的
hist()
中的内容。您为什么不读一下这个小插曲呢。在不到500个字符的时间里,它会比我做的更公正@LinMa我使用
rnorm
只是为了创建一些数据<代码>分位数
将对向量起作用,而不管其分布如何@我同意你的简短版本的代码。我只是想说明如果选择了上限和下限会是什么样子。在这个定义中,“样本分位数”指的是你的数据集。例如,使用
分位数(0:10)
。您的数据集是'01 2 3 4 5 6 7 8 9 10',但它被假定为
0:10
s的整体样本或子集。这个定义考虑到了这样一个想法,即我们所有的数据都只是一个样本,
分位数
可以用于使用数据集中给出的数据对整个人群进行概括。希望这有帮助。是的,这是正确的<代码>分位数(1:10)正在计算所有数字1到10的分位数。@LinMa我建议进一步阅读分位数。我认为维基百科的文章写得很好,可以帮助你回答各种各样的问题
k
只是我们给某个特定对象的一个名称