library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
#1.5
#(1)
# 载入 Titanic 数据集并转换为数据框
data <- as.data.frame(Titanic)
# 使用 xtabs() 生成 Sex 和 Survived 的列联表,并加上 Freq 作为频数
table0 <- xtabs(Freq ~ Sex + Survived, data = data)
# 使用 addmargins() 计算并添加边际和
table1 <- addmargins(table0)
# 打印带边际和的列联表
print(table1)
## Survived
## Sex No Yes Sum
## Male 1364 367 1731
## Female 126 344 470
## Sum 1490 711 2201
#(2)
table2 <- xtabs(Freq ~ Class + Sex + Age + Survived, data = data)
print(table2)
## , , Age = Child, Survived = No
##
## Sex
## Class Male Female
## 1st 0 0
## 2nd 0 0
## 3rd 35 17
## Crew 0 0
##
## , , Age = Adult, Survived = No
##
## Sex
## Class Male Female
## 1st 118 4
## 2nd 154 13
## 3rd 387 89
## Crew 670 3
##
## , , Age = Child, Survived = Yes
##
## Sex
## Class Male Female
## 1st 5 1
## 2nd 11 13
## 3rd 13 14
## Crew 0 0
##
## , , Age = Adult, Survived = Yes
##
## Sex
## Class Male Female
## 1st 57 140
## 2nd 14 80
## 3rd 75 76
## Crew 192 20
#(3)
table3 <- as.data.frame(table2)
print(table3)
## Class Sex Age Survived Freq
## 1 1st Male Child No 0
## 2 2nd Male Child No 0
## 3 3rd Male Child No 35
## 4 Crew Male Child No 0
## 5 1st Female Child No 0
## 6 2nd Female Child No 0
## 7 3rd Female Child No 17
## 8 Crew Female Child No 0
## 9 1st Male Adult No 118
## 10 2nd Male Adult No 154
## 11 3rd Male Adult No 387
## 12 Crew Male Adult No 670
## 13 1st Female Adult No 4
## 14 2nd Female Adult No 13
## 15 3rd Female Adult No 89
## 16 Crew Female Adult No 3
## 17 1st Male Child Yes 5
## 18 2nd Male Child Yes 11
## 19 3rd Male Child Yes 13
## 20 Crew Male Child Yes 0
## 21 1st Female Child Yes 1
## 22 2nd Female Child Yes 13
## 23 3rd Female Child Yes 14
## 24 Crew Female Child Yes 0
## 25 1st Male Adult Yes 57
## 26 2nd Male Adult Yes 14
## 27 3rd Male Adult Yes 75
## 28 Crew Male Adult Yes 192
## 29 1st Female Adult Yes 140
## 30 2nd Female Adult Yes 80
## 31 3rd Female Adult Yes 76
## 32 Crew Female Adult Yes 20
#1.6
# 设置随机数种子,保证结果可复现
set.seed(123)
# 生成1000个均值为200,标准差为10的正态分布随机数
random_data <- rnorm(1000, mean = 200, sd = 10)
# 使用 cut() 将数据按组距为10分组
grouped_data <- cut(random_data, breaks = seq(150, 250, by = 10), include.lowest = TRUE, right = FALSE)
# 生成频数分布表
frequency_table <- table(grouped_data)
# 打印频数分布表
print(frequency_table)
## grouped_data
## [150,160) [160,170) [170,180) [180,190) [190,200) [200,210) [210,220) [220,230)
## 0 0 19 146 330 348 129 27
## [230,240) [240,250]
## 1 0