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,其他学历对初中及以下的比例);

代码如下:

......

......

......

......

......

......

相关推荐
湫ccc40 分钟前
《Python基础》之字符串格式化输出
开发语言·python
mqiqe1 小时前
Python MySQL通过Binlog 获取变更记录 恢复数据
开发语言·python·mysql
AttackingLin1 小时前
2024强网杯--babyheap house of apple2解法
linux·开发语言·python
Ysjt | 深2 小时前
C++多线程编程入门教程(优质版)
java·开发语言·jvm·c++
ephemerals__2 小时前
【c++丨STL】list模拟实现(附源码)
开发语言·c++·list
码农飞飞2 小时前
深入理解Rust的模式匹配
开发语言·后端·rust·模式匹配·解构·结构体和枚举
一个小坑货2 小时前
Rust 的简介
开发语言·后端·rust
湫ccc2 小时前
《Python基础》之基本数据类型
开发语言·python