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

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参数),可以根据数据规模和个人偏好选择合适的方法。

http://www.lryc.cn/news/2378881.html

相关文章:

  • 风控域——风控决策引擎系统设计
  • CAPL Class: TcpSocket (此类用于实现 TCP 网络通信 )
  • 数据分析 —— 数据预处理
  • 软件架构风格系列(4):事件驱动架构
  • windows系统各版本下载
  • arduino平台读取鼠标光电传感器
  • 【Linux网络】网络层
  • 力扣-98.验证二叉搜索树
  • 5.17本日总结
  • 大模型学习:Deepseek+dify零成本部署本地运行实用教程(超级详细!建议收藏)
  • VSCode launch.json 配置参数详解
  • pytest多种断言类型封装为自动化断言规则库
  • Oracle数据库如何进行冷备份和恢复
  • LeetCode Hot100 (2、3、4、5、6、8、9、12)
  • FastMCP:为大语言模型构建强大的上下文和工具服务
  • 数据结构(3)线性表-链表-单链表
  • Java Solon v3.3.0 发布(国产优秀应用开发基座)
  • 23种设计模式概述详述(C#代码示例)
  • 数字化工厂升级引擎:Modbus TCP转Profinet网关助力打造柔性生产系统
  • FPGA生成随机数的方法
  • 【Linux C/C++开发】轻量级关系型数据库SQLite开发(包含性能测试代码)
  • 2025认证杯第二阶段数学建模B题:谣言在社交网络上的传播思路+模型+代码
  • 记录算法笔记(2025.5.17)验证二叉搜索树
  • flutter编译时 设置jdk版本
  • ctfshow——web入门254~258
  • 【数据处理】xarray 数据处理教程:从入门到精通
  • qt5.14.2 opencv调用摄像头显示在label
  • 科技的成就(六十八)
  • 芯片生态链深度解析(三):芯片设计篇——数字文明的造物主战争
  • Rocky Linux 9.5 基于kubeadm部署k8s