使用r语言:利用 forcats::gss_cat 数据解决下列问题。 1.去掉年龄(age) 为 NA 的观测之后,将年龄(age)字段的值按照小于等于 45 岁,46- 69 岁,70 岁及以上 分别更新为 youth,middle_aged 和 old_people,将其数据类型 转换为 factor,并根据年龄从小到大指定因子水平(levels)的顺序。每一年龄组的样本 分别是多少?(6 分) 2.在上述数据的基础上,统计不同年份(year)、年龄段(age)与人(race)组合的样本数 量;并通过长宽表转化(tidyr)使得每一个 year-race 组合只有一行观测,对每一行计 算年轻人(youth)所占比例。最终所生成的数据集有几行几列?(8 分) 3.绘制折线图,描述样本中不同种族年轻人所占比例随时间的变化趋势,图中用不同的颜 色来区分种族,每个观测值表示为一个点,并用线把同一种族的点连接起来,最后为其添加 有意义的坐标轴名称与标题。图中排在最上方的线对应的种族是什么?
时间: 2024-03-17 14:46:16 浏览: 138
抱歉,作为语言模型,我无法执行代码操作,但我可以提供相应的代码示例供您参考:
1.
```R
library(forcats)
library(dplyr)
# 读取数据
data <- read.csv("data.csv")
# 去掉年龄为NA的观测
data <- data %>% filter(!is.na(age))
# 将年龄分组并更新为相应的分类
data$age_group <- cut(data$age, breaks = c(0, 45, 69, Inf),
labels = c("youth", "middle_aged", "old_people"),
include.lowest = TRUE)
# 转换为factor并按年龄从小到大排序
data$age_group <- factor(data$age_group, levels = c("youth", "middle_aged", "old_people"))
# 计算每一年龄组的样本数
count(data, age_group)
```
2.
```R
library(tidyr)
library(dplyr)
# 读取数据
data <- read.csv("data.csv")
# 去掉年龄为NA的观测
data <- data %>% filter(!is.na(age))
# 将年龄分组并更新为相应的分类
data$age_group <- cut(data$age, breaks = c(0, 45, 69, Inf),
labels = c("youth", "middle_aged", "old_people"),
include.lowest = TRUE)
# 转换为factor并按年龄从小到大排序
data$age_group <- factor(data$age_group, levels = c("youth", "middle_aged", "old_people"))
# 统计每个年份、种族和年龄段的样本数
count(data, year, race, age_group) %>%
# 计算年轻人占比
mutate(youth_prop = n / sum(n)) %>%
# 转换为长表格
pivot_longer(cols = c(youth_prop), names_to = "proportion_type", values_to = "proportion") %>%
# 转换为宽表格
pivot_wider(names_from = proportion_type, values_from = proportion)
```
3.
```R
library(ggplot2)
library(dplyr)
# 读取数据
data <- read.csv("data.csv")
# 去掉年龄为NA的观测
data <- data %>% filter(!is.na(age))
# 将年龄分组并更新为相应的分类
data$age_group <- cut(data$age, breaks = c(0, 45, 69, Inf),
labels = c("youth", "middle_aged", "old_people"),
include.lowest = TRUE)
# 计算每个年份、种族和年龄段的样本数
count(data, year, race, age_group) %>%
# 计算年轻人占比
mutate(youth_prop = ifelse(age_group == "youth", n / sum(n), 0)) %>%
# 按年份和种族分组并计算年轻人占比的平均值
group_by(year, race) %>%
summarise(youth_prop_mean = mean(youth_prop)) %>%
# 绘制折线图
ggplot(aes(x = year, y = youth_prop_mean, color = race)) +
geom_line() +
xlab("年份") +
ylab("年轻人占比") +
ggtitle("不同种族年轻人占比随时间变化的趋势") +
scale_color_discrete(name = "种族")
```
在第三个问题中,排在最上方的线对应的种族是颜色最深的那条线,对应的种族可以通过图例进行确认。
阅读全文