R 为什么我使用不同的函数时会得到两个不同的输出?
我有以下数据:R 为什么我使用不同的函数时会得到两个不同的输出?,r,R,我有以下数据: df1<- structure(list(Score = c(26, 46, 62, 57, 18, 16, 44, 37, 47, 32, 71, 72, 39, 85, 39, 77, 82, 34, 73, 79, 82, 29, 30, 33, 61, 18, 15, 22, 30, 15, 17, 50, 34, 67, 46, 73, 10, 62, 20, 81, 55, 69, 52, 78, 61, 14, 59, 37, 60, 55, 31, 11
df1<- structure(list(Score = c(26, 46, 62, 57, 18, 16, 44, 37, 47, 32, 71, 72,
39, 85, 39, 77, 82, 34, 73, 79, 82, 29, 30, 33, 61, 18, 15, 22, 30, 15, 17, 50,
34, 67, 46, 73, 10, 62, 20, 81, 55, 69, 52, 78, 61, 14, 59, 37, 60, 55, 31, 11,
13, 30, 68, 60, 61, 69, 20, 47, 81, 62, 76, 43, 42, 10, 36, 54, 56, 49, 15, 7,
48, 11, 51, 32, 55, 80, 13, 57, 55, 70, 16, 85, 40, 75, 45, 7, 46, 19, 81, 35,
63, 30, 16, 71, 50, 15, 81, 55, 46, 27, 64, 29, 25, 79, 70, 13, 27, 14, 62, 53,
26, 53, 74, 48, 73, 68, 82, class = "data.frame")))
我使用了StatMeasures
包来计算十分位数。我使用了:
df2<- decile(vector = Score, decreasing = TRUE)
df2n_tile
用于大致将值放入10个存储箱/存储桶中。它按等级排列,即第一个n/10等级变成1,下一个n/10等级变成2,依此类推。因此,当您在小数点附近有联系时,它可能会进入不同的箱子:
首先,我们得到您的计算结果:
library(StatMeasures)
library(dplyr)
df1 = data.frame(
Score = c(26, 46, 62, 57, 18, 16, 44, 37, 47, 32, 71, 72, 39, 85, 39, 77, 82, 34, 73, 79, 82, 29, 30, 33, 61, 18, 15, 22, 30, 15, 17, 50, 34, 67, 46, 73, 10, 62, 20, 81, 55, 69, 52, 78, 61, 14, 59, 37, 60, 55, 31, 11, 13, 30, 68, 60, 61, 69, 20, 47, 81, 62, 76, 43, 42, 10, 36, 54, 56, 49, 15, 7, 48, 11, 51, 32, 55, 80, 13, 57, 55, 70, 16, 85, 40, 75, 45, 7, 46, 19, 81, 35, 63, 30, 16, 71, 50, 15, 81, 55, 46, 27, 64, 29, 25, 79, 70, 13, 27, 14, 62, 53, 26, 53, 74, 48, 73, 68, 82)
)
df1 = df1 %>%
mutate(quantile1 = ntile(Score, 10)) %>%
mutate(quantile2 = decile(vector = Score))
我们查看您的十分位值:
quantile(df1$Score,seq(0,1,by=0.1))
0% 10% 20% 30% 40% 50% 60% 70% 80% 90% 100%
7.0 15.0 21.2 30.4 39.2 48.0 55.0 61.6 70.0 78.2 85.0
如果两个排名不同:
df1[df1$quantile1 != df1$quantile2,]
Score quantile1 quantile2
3 62 7 8
20 79 9 10
30 15 2 1
71 15 2 1
81 55 7 6
98 15 2 1
100 55 7 6
116 48 6 5
我们看一个例子:
df1[df1$Score==48,]
Score quantile1 quantile2
73 48 5 5
116 48 6 5
如果您想要小数点,则n_tile
的第一个方法是不正确的,因为48进入2个箱子。因此,使用StatMeasures中的十分位数函数
如果您只需要将数据分成十部分,n_tile就可以了。但是,如果我想使用小数点作为顺序变量,比如说回归,那么你需要使用一个适当的小数点,这样领带就会得到一个一致的值,同意吗?@User20100,小数点被定义为排名数据每0.1个间隔的值。例如,您有100个数据点,第一个十分位数是排名10的值。适当的十分位数意味着,您可以根据十分位数来存储数据,而不是简单地将数据分成10个部分。如果你看一下Statmeasures中的十进制代码,它使用了截数和分位数,这正是我们定义十进制、分位数等的方式。
df1[df1$Score==48,]
Score quantile1 quantile2
73 48 5 5
116 48 6 5