首页 > 解决方案 > 分组汇总数据

问题描述

我正在尝试按照 DataCamp 课程中提供的示例分析一些数据。但是,我认为他们在 Datacamp 上跳过了一些步骤,我遇到了一些问题。特别是,在他们提供的示例中,他们有一个名为 MedGPA 的数据集,如下所示:

  Accept Acceptance Sex BCPM  GPA VR PS WS BS MCAT Apps
1       D          0   F 3.59 3.62 11  9  9  9   38    5
2       A          1   M 3.75 3.84 12 13  8 12   45    3
3       A          1   F 3.24 3.23  9 10  5  9   33   19
4       A          1   F 3.74 3.69 12 11  7 10   40    5
5       A          1   F 3.53 3.38  9 11  4 11   35   11
6       A          1   M 3.59 3.72 10  9  7 10   36    5
7       A          1   M 3.85 3.89 11 12  6 11   40    5
8       D          0   M 3.26 3.34 11 11  8  9   39    7
9       A          1   F 3.74 3.71  8 10  6 11   35    5
10      A          1   F 3.86 3.89  9  9  6 10   34   11
11      A          1   F 4.00 3.97 11  9  8 11   39    6
12      A          1   F 3.35 3.49 11  8  4  8   31    9
13      A          1   M 3.77 3.77  8 10  7 10   35    5
14      D          0   M 3.60 3.61  9  9  4 10   32    8
15      D          0   M 3.29 3.30 11  8  6  7   32   15
16      A          1   F 3.26 3.54 12  8  8 10   38    6
17      D          0   M 3.75 3.65  8  8  8 11   35    6
18      A          1   M 3.51 3.54  9 10  9 11   39    1
19      D          0   M 3.27 3.25  8  9  5 10   32    5
20      A          1   M 3.95 3.89 13 14  8 13   48    5

然后,他们说您应该对数据进行分箱并对分箱数据集进行一些分析。

他们提供了分箱数据集,它看起来像这样:

> MedGPA_binned
# A tibble: 6 x 3
  bin         mean_GPA acceptance_rate
  <fct>          <dbl>           <dbl>
1 [2.72,3.3]      3.11           0.2  
2 (3.3,3.44]      3.39           0.2  
3 (3.44,3.58]     3.54           0.75 
4 (3.58,3.7]      3.65           0.333
5 (3.7,3.87]      3.79           0.889
6 (3.87,3.97]     3.91           1

GPA 预测学生是否会被录取(acceptance_rate)。

如何从第一个数据集到第二个数据集?

在我的数据集中,我有一系列问题的答案(连续变量),我想预测的变量是 CorrectGuess。这个变量只有 2 种可能的结果:0 = 正确猜测,1 = 错误猜测。

我尝试使用我的数据集:

data$bins2 = cut(data$Q15_1, breaks = 4, labels = c("Level1", "Level2", "Level3","Level4"))

这会在我的数据集中添加一个名为 bins2 的列,看起来像

level2
leve1
leve3
level1 

等等...

我还尝试了另一种方法:

# Creating bins
# set up boundaries for intervals/bins
breaks <- c(0,20,40,60,80,100)
# specify interval/bin labels
labels <- c("<20", "20-40", "40-60", "60-80", "80-100")
# bucketing data points into bins
bins <- cut(data$Q15_1, breaks, include.lowest = T, right=FALSE, labels=labels)
# inspect bins
summary(bins)
plot(bins, main="Frequency", ylab="Ppt Answer Rating",col="bisque")

这会创建一个名为 bins 的变量,但看起来仍然不像我需要的那样。

如何使用分箱数据和每个分箱的正确猜测概率创建数据集?

标签: r

解决方案


在执行回归之前对数据进行分类对我来说没有多大意义,你只是在丢弃信息,并可能扭曲分析。

但无论如何,我相信你正在寻找这样的东西,使用aggregate()

tt <- read.table(text="
  Accept Acceptance Sex BCPM  GPA VR PS WS BS MCAT Apps
1       D          0   F 3.59 3.62 11  9  9  9   38    5
2       A          1   M 3.75 3.84 12 13  8 12   45    3
3       A          1   F 3.24 3.23  9 10  5  9   33   19
4       A          1   F 3.74 3.69 12 11  7 10   40    5
5       A          1   F 3.53 3.38  9 11  4 11   35   11
6       A          1   M 3.59 3.72 10  9  7 10   36    5
7       A          1   M 3.85 3.89 11 12  6 11   40    5
8       D          0   M 3.26 3.34 11 11  8  9   39    7
9       A          1   F 3.74 3.71  8 10  6 11   35    5
10      A          1   F 3.86 3.89  9  9  6 10   34   11
11      A          1   F 4.00 3.97 11  9  8 11   39    6
12      A          1   F 3.35 3.49 11  8  4  8   31    9
13      A          1   M 3.77 3.77  8 10  7 10   35    5
14      D          0   M 3.60 3.61  9  9  4 10   32    8
15      D          0   M 3.29 3.30 11  8  6  7   32   15
16      A          1   F 3.26 3.54 12  8  8 10   38    6
17      D          0   M 3.75 3.65  8  8  8 11   35    6
18      A          1   M 3.51 3.54  9 10  9 11   39    1
19      D          0   M 3.27 3.25  8  9  5 10   32    5
20      A          1   M 3.95 3.89 13 14  8 13   48    5", header=TRUE)

tt$BCPMd = cut(tt$BCPM, breaks=4, labels=c("L1", "L2", "L3","L4"))
aggregate(cbind(GPA, Acceptance) ~ BCPMd, data=tt, mean)
#   BCPMd      GPA Acceptance
# 1    L1 3.358333        0.5
# 2    L2 3.574000        0.6
# 3    L3 3.732000        0.8
# 4    L4 3.910000        1.0

推荐阅读