r - 分组汇总数据
问题描述
我正在尝试按照 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 的变量,但看起来仍然不像我需要的那样。
如何使用分箱数据和每个分箱的正确猜测概率创建数据集?
解决方案
在执行回归之前对数据进行分类对我来说没有多大意义,你只是在丢弃信息,并可能扭曲分析。
但无论如何,我相信你正在寻找这样的东西,使用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
推荐阅读
- python - 如何将记录分隔符字符转换为换行符
- php - Alexa CRM 如何将数据添加到不同的实体
- r - Countryref 到数据框
- javascript - 使用 RobotFramework 选择 Readonly Datepickers 并在其中输入日期
- xcode - 如何使用 Xcode 11 Git Blame/Authors 以前的版本?
- java - Camel Salesforce 组件 REST API salesforce:查询无法检索记录
- git - tortoisegit 支持 git lfs 吗?
- tensorflow-estimator - 运行 estimator.predict 时如何使用钩子获取 feed_dict
- jenkins - Windows 上的本地 Jenkins 连接到远程 GitLab
- jenkins - 是否可以从管道步骤动态设置 Jenkins 作业参数?