代码完成的功能:
- 创建数据集(数据框),
- 写入到文件中,
- 显示数据,
- 分组计算平均年龄,
在Rstudio中,创建R markdown或R notebook文件运行。以下是添加了注释的完整R代码,解释了每个步骤的功能和目的:
# R Notebook文档设置
title: "R Notebook"
output: html_notebook
# 创建示例数据集
age = c(22,25,45,33,55) # 创建年龄向量
name = c("Ken","Jhon","Daliu","Lisa","Jack") # 创建姓名向量
gender = c("M","F","F","M","F") # 创建性别向量(M=男,F=女)
area = c("City","Rural","City","Rural","Rural") # 创建区域向量
df <- data.frame(area,name,gender,age) # 组合向量为数据框
# 将数据保存为CSV文件
write.table(df,file = "~/python/name_age.csv", # 指定保存路径
row.names = FALSE, # 不保存行名
col.names = TRUE, # 保存列名
quote = FALSE) # 不使用引号包裹文本
# 显示数据框内容并绘制年龄趋势图
df # 打印数据框内容
plot(df[["age"]],ylab = "age",type = "l") # 绘制年龄折线图
print("file -name_age.csv- saved") # 提示文件已保存
# 读取CSV文件并查看数据结构
library(readr) # 加载readr包用于高效读取数据
name_age <- read_csv("~/python/name_age.csv") # 读取CSV文件
View(name_age) # 在RStudio中查看数据
typeof(name_age) # 查看数据类型
# 生成性别与区域的交叉表
table(area,gender) # 统计不同区域和性别的人数分布
# 方法1: 使用基础函数tapply计算不同性别平均年龄
avg_age_by_gender <- tapply(df$age, df$gender, mean)
print(avg_age_by_gender)
# 方法2: 使用dplyr包计算不同性别平均年龄
library(dplyr) # 加载dplyr包
avg_age_by_gender <- df %>%
group_by(gender) %>% # 按性别分组
summarise(mean_age = mean(age, na.rm = TRUE)) # 计算平均年龄并处理缺失值
print(avg_age_by_gender)
# 方法3: 使用data.table包计算不同性别平均年龄(适合大数据集)
library(data.table) # 加载data.table包
dt <- as.data.table(df) # 将数据框转换为data.table格式
avg_age_by_gender <- dt[, .(mean_age = mean(age, na.rm = TRUE)), by = gender] # 分组计算
print(avg_age_by_gender)
代码功能说明
- 数据创建与保存
- 创建了包含姓名、年龄、性别和区域的示例数据集
- 将数据保存为CSV文件到指定路径
- 绘制了年龄趋势折线图
- 数据读取与分析
- 使用
readr
包读取CSV文件 - 查看了数据的结构和类型
- 生成了性别与区域的交叉表
- 分组统计
- tapply方法:使用R基础函数进行分组计算
- dplyr方法:使用管道操作符进行流式数据处理
- data.table方法:针对大数据集的高效处理方案
所有统计方法都考虑了缺失值处理(通过na.rm=TRUE
参数),可以根据数据规模和个人偏好选择合适的方法。