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

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.xdnf.cn/news/6854.html

相关文章:

  • 如何防止SQL注入攻击?
  • 用 CodeBuddy 打造我的「TextBeautifier」文本美化引擎
  • asp.net core api RESTful 风格控制器
  • 清华大学大模型驱动的跨尺度空间智能研究最新综述:具身智能体、智慧城市和地球科学领域的进展
  • 【OpenCV】帧差法、级联分类器、透视变换
  • 【GESP】C++三级真题 luogu-B3867 [GESP202309 三级] 小杨的储蓄
  • Hi3516DV500刷写固件
  • Linux 文件权限 (rwx) 详解
  • PowerBI企业运营分析——RFM模型分析
  • 栈与队列-
  • AI知识梳理——RAG、Agent、ReAct、LangChain、LangGraph、MCP、Function Calling、JSON-RPC
  • 电机试验平台:创新科技推动电动机研究发展
  • 多模态学习(三)—— ROPE位置编码:从理论到实践
  • JavaScript入门【1】概述
  • 进阶-数据结构部分:​​​​​​​2、常用排序算法
  • OpenHarmony平台驱动使用 (二),Camera
  • SQL语句执行问题
  • 【AI算法工程师面试指北】ResNet为什么用avgpool结构?
  • Python 基础之函数命名
  • Redis持久化机制详解:保障数据安全的关键策略
  • MySQL表的约束(上)
  • LeetCode 第 45 题“跳跃游戏 II”
  • Spring之Bean的初始化 Bean的生命周期 全站式解析
  • PyTorch实现CrossEntropyLoss示例
  • AIGC在电商行业的应用:革新零售体验
  • 计算机网络(1)——概述
  • Docker入门指南:镜像、容器与仓库的核心概念解析
  • Redis的Hot Key自动发现与处理方案?Redis大Key(Big Key)的优化策略?Redis内存碎片率高的原因及解决方案?
  • STM32 | FreeRTOS 递归信号量
  • C# 深入理解类(静态函数成员)