当前位置: 首页 > news >正文

R语言数据框(datafram)数据的构建及简单分析

代码完成的功能:

  • 创建数据集(数据框),

  • 写入到文件中,

  • 显示数据,

  • 分组计算平均年龄,

在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)

代码功能说明

  1. 数据创建与保存
  • 创建了包含姓名、年龄、性别和区域的示例数据集
  • 将数据保存为CSV文件到指定路径
  • 绘制了年龄趋势折线图
  1. 数据读取与分析
  • 使用readr包读取CSV文件
  • 查看了数据的结构和类型
  • 生成了性别与区域的交叉表
  1. 分组统计
  • tapply方法:使用R基础函数进行分组计算
  • dplyr方法:使用管道操作符进行流式数据处理
  • data.table方法:针对大数据集的高效处理方案

所有统计方法都考虑了缺失值处理(通过na.rm=TRUE参数),可以根据数据规模和个人偏好选择合适的方法。

相关文章:

  • SAP学习笔记 - 开发12 - CAP 之 开发准备,添加服务
  • MySQL刷题相关简单语法集合
  • 2023年全国青少年信息素养大赛-图形化编程复赛真题—打气球
  • PIC16F18877 的主时钟 设置方法
  • 第八节第四部分:认识泛型、泛型类、泛型接口
  • php fiber 应用
  • OpenCV透视变换
  • Java 应用如何实现 HTTPS:加密数据传输的实用指南
  • Ankr:Web3基础设施的革新者
  • 【第二篇】 初步解析Spring Boot
  • 【Python 算法零基础 3.递推】
  • 防范Java应用中的恶意文件上传:确保服务器的安全性
  • 【Redis】redis用作缓存和分布式锁
  • Docker常见命令解读
  • EXO分布式部署deepseek r1
  • 机器学习 KNN算法
  • 智慧水务关键一环:Profinet转Modbus TCP网关驱动供水系统高效互联
  • 计算机视觉与深度学习 | Python实现EMD-SSA-VMD-LSTM-Attention时间序列预测(完整源码和数据)
  • 【深度学习新浪潮】大模型时代,我们还需要学习传统机器学习么?
  • [system-design] ByteByteGo_Note Summary
  • 中国纪检监察刊文:力戒形式主义官僚主义关键是要坚持实事求是
  • 上海国际珠宝时尚功能区未来三年如何建设?六大行动将开展
  • “免签圈”扩容,旅游平台:今年以来巴西等国入境游订单显著增加
  • 中办、国办关于持续推进城市更新行动的意见
  • 刘晓庆被实名举报涉嫌偷税漏税,税务部门启动调查
  • 中国科学院院士、我国航天液体火箭技术专家朱森元逝世