R语言分析任务:

有需要实验报告的可CSDN 主页个人私信

《大数据统计分析软件(R语言)》

实 验 报 告

指导教师:

专 业:

班 级:

姓 名:

学 号:

完成时间:

实验目的

掌握数据读入的各类函数;简单的数据处理:新变量的生成,数据集筛选排序,数据集合并。

掌握dplyr包中的主要函数。

掌握绘图的主要函数。

掌握数据整理、描述性统计分析、回归等,较为完整的数据分析过程。

实验内容

读入数据集:"(1)2002-2022年网民数量.csv"

  1. 计算半年度网民数量增长率;
R 复制代码
# 引入所需的库

library(readr)

library(dplyr)

library(lubridate)



# 读取数据

# data <- read_csv("(1)2002-2022年网民数量.csv")

data <- read_csv("(1)2002-2022年网民数量.csv", locale = locale(encoding = "GB2312"))



# 使用head函数查看数据前10行

head(data, 10)



# 重命名列名

data <- data %>%

  rename(

    时间 = 时间,

    网民数量 = `网民数量(万人)`,

    互联网普及率 = `互联网普及率`

  )



# 将时间转换为日期

data$时间 <- dmy(paste0("01-", data$时间), tz = "UTC")



# 将互联网普及率转换为数值类型

data$互联网普及率 <- as.numeric(gsub("%", "", data$互联网普及率)) / 100



# 计算半年度网民数量增长率

data <- data %>%

  arrange(时间) %>%

  mutate(增长率 = (网民数量 - lag(网民数量)) / lag(网民数量))

# 使用head函数查看数据前10行

head(data, 10)
  1. 根据网民数量、网民数量增长率绘制双轴图,网民数量用柱状图表示,网民数量增长率用折线图表示;

双轴图如图1所示:

图1双轴图

代码如下:

R 复制代码
# 将增长率列转换为数值类型
data$增长率 <- as.numeric(data$增长率)

# 移除第一个NA值
data <- data[-1, ]

# 绘制图表
# 输出增长率的数值
print(data$增长率)

ggplot(data, aes(x = 时间)) +
  geom_col(aes(y = 网民数量), fill = "blue") +
  geom_line(aes(y = 增长率 * 100000, color = "增长率"), size = 1) +  # 增大增长率的显示范围
  scale_y_continuous(name = "网民数量(万人)", sec.axis = sec_axis(~./100000, name = "增长率 (%)")) +
  theme_minimal() +
  labs(color = "指标")
  1. 根据图形说明我国网民规模的变化趋势与特征。

从图形可以看出,我国网民数量呈现出明显的增长趋势。从2002年到2022年底,网民数量从约4580万人增长到约106744万人,增长了近23倍。这表明互联网的普及程度不断提高,越来越多的人开始使用互联网。

增长率特征:增长率是描述网民数量增长速度的指标。从图形中可以看出,增长率在不同时间段内有所波动。初期增长率较高,随着网民数量的增加,增长率逐渐趋于平缓。可以观察到,在2002年到2007年初期,增长率呈现出较大的波动,而在2014年后增长率相对较稳定。

互联网普及率变化:互联网普及率是衡量互联网在整个人口中普及程度的指标。根据数据,互联网普及率从2002年的0.036增长到2022年底的0.756。这显示了互联网的普及程度不断提高,越来越多的人开始接触和使用互联网。

综上所述,通过观察图形,我们可以看到我国网民规模的变化趋势是逐年增长,并且增长率逐渐稳定。互联网普及率也在不断提高,显示出我国互联网发展的活跃态势。

R 复制代码
读入数据集:"(2)2007-2022年接入方式.csv"
与"(1)2002-2022年网民数量.csv"进行合并
代码如下:

# 读取数据集
data1 <- read.csv("(1)2002-2022年网民数量.csv")
data2 <- read.csv("(2)2007-2022年接入方式.csv")
# 合并数据集
merged_data <- merge(data1, data2, by = "时间")
head(merged_data, 10)
# 保存合并后的数据集为CSV文件
write.csv(merged_data, "合并后数据.csv", row.names = FALSE)

前十个数据结果显示如图2所示:

图2合并后前十条数据

  1. 计算出手机上网比例、电视网民数、台式电脑网民数、笔记本电脑网民数、平板电脑网民数(不同接入方式人数有重合,总数会大于真实网民数量)

代码如下:

R 复制代码
# 读取合并后的数据集
merged_data <- read.csv("合并后数据.csv")
# 计算手机上网比例
merged_data$手机上网比例 <- as.numeric(gsub("%", "", merged_data$手机网民数量.万人.)) / merged_data$网民数量.万人. * 100
# 将因子列转换为数值型
merged_data$电视网民数 <- as.numeric(gsub("%", "", merged_data$电视上网比例))
merged_data$台式电脑网民数 <- as.numeric(gsub("%", "", merged_data$台式电脑上网比例))
merged_data$笔记本电脑网民数 <- as.numeric(gsub("%", "", merged_data$笔记本电脑上网比例))
merged_data$平板电脑网民数 <- as.numeric(gsub("%", "", merged_data$平板电脑上网比例))
# 打印计算结果
print(merged_data[, c("时间", "手机上网比例", "电视网民数", "台式电脑网民数", "笔记本电脑网民数", "平板电脑网民数")])

数据展示前十条,如图3所示:

图3合并后前十条数据

  1. 根据数据绘制 各种接入方式比例的折线图,并比较说明每种接入方式的变化趋势与特征。

各种接入方式变化的折线图如图4所示;

图4 接入方式折线图

在整体趋势上,电视上网比例呈现下降趋势,从高达94.00%逐渐下降至约31.10%左右。从7-Dec到8-Dec有较大幅度的下降,之后逐渐下降至最低点,之后保持相对稳定。

台式电脑上网比例呈现下降趋势,从26.70%逐渐下降至约29.80%左右。从7-Dec到8-Dec有轻微上升,之后逐渐下降至最低点,之后保持相对稳定。

笔记本电脑上网比例呈现下降趋势,从26.70%逐渐下降至约28.30%左右。从7-Dec到8-Dec有较大幅度的上升,之后逐渐下降至最低点,之后保持相对稳定。

平板电脑上网比例呈现下降趋势,从34.80%逐渐下降至约27.50%左右。从14-Dec到15-Dec有轻微的上升,之后逐渐下降至最低点,之后保持相对稳定。

各种接入方式的变化趋势都呈现下降的特征,其中电视上网比例下降幅度最大,而台式电脑、笔记本电脑和平板电脑的下降趋势相对较缓。这可能反映了手机和移动设备的普及,以及人们更多地倾向于使用便携式设备进行上网。

    1. 读入数据集:"(3)2008-2022年网民结构.csv"

      R 复制代码
      与"(1)2002-2022年网民数量.csv"进行合并;
      代码:
      
      # 读取数据集
      data1 <- read.csv("(3)2008-2022年网民结构.csv", header = TRUE, stringsAsFactors = FALSE)
      data2 <- read.csv("(1)2002-2022年网民数量.csv", header = TRUE, stringsAsFactors = FALSE)
      
      # 合并数据集
      merged_data <- merge(data1, data2, by = "时间")
      
      # 修改列名
      colnames(merged_data)[colnames(merged_data) == "X10岁以下"] <- "10岁以下"
      colnames(merged_data)[colnames(merged_data) == "X10.19岁"] <- "10-19岁"
      colnames(merged_data)[colnames(merged_data) == "X20.29岁"] <- "20-29岁"
      colnames(merged_data)[colnames(merged_data) == "X30.39岁"] <- "30-39岁"
      colnames(merged_data)[colnames(merged_data) == "X40.49岁"] <- "40-49岁"
      colnames(merged_data)[colnames(merged_data) == "X50.59岁"] <- "50-59岁"
      colnames(merged_data)[colnames(merged_data) == "X60岁及以上"] <- "60岁及以上"
      colnames(merged_data)[colnames(merged_data) == "小学及以下"] <- "小学及以下"
      
      # 显示前10条数据
      head(merged_data, 10)
      
      # 将合并后的数据保存到CSV文件
      write.csv(merged_data, file = "合并后的数据.csv", row.names = FALSE)

运行结果如图5所示:

图5 合并后数据前10条

  1. 编写函数计算出城镇网民数量、农村网民数量、男性网民数量、女性网民数量、各年龄层网民数量、各学历网民数量(可以编写函数通过apply族函数进行批量处理,也可以直接编写循环函数直接一次性得到所有结果);
R 复制代码
......

运行结果如图6所示:

图6 程序运行界面

  1. 进一步计算网民性别比(以女性网民为100,男性对女性的比例)、城乡比(以农村网民为100,城镇对农村的比例)、年龄比(以19岁以下网民为100,其他年龄层对19岁以下的比例)、学历比(以初中及以下网民为100,其他学历对初中及以下的比例);

代码如下:

......

......

......

......

......

......

相关推荐
玩电脑的辣条哥2 小时前
Python如何播放本地音乐并在web页面播放
开发语言·前端·python
ll7788115 小时前
LeetCode每日精进:20.有效的括号
c语言·开发语言·算法·leetcode·职场和发展
Jackson@ML6 小时前
Python数据可视化简介
开发语言·python·数据可视化
赵琳琅6 小时前
Java语言的云计算
开发语言·后端·golang
lly2024067 小时前
jQuery 杂项方法
开发语言
赵琳琅7 小时前
MDX语言的安全开发
开发语言·后端·golang
开开又心心的学嵌入式7 小时前
C语言——指针进阶应用
c语言·开发语言
开开又心心的学嵌入式7 小时前
C语言——指针基础知识
c语言·开发语言
lonelyhiker7 小时前
javascript的原型链
开发语言·javascript·原型模式
夏梓蕙8 小时前
Elixir语言的软件开发工具
开发语言·后端·golang