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

R 语言学习教程,从入门到精通,R CSV 文件使用(17)

1、R CSV 文件

R 作为统计学专业工具,如果只能人工的导入和导出数据将使其功能变得没有意义,所以 R 支持批量的从主流的表格存储格式文件(例如 CSV、Excel、XML 等)中获取数据。

1.1、CSV 表格交互

CSV(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号) 是一种非常流行的表格存储文件格式,这种格式适合储存中型或小型数据规模的数据。
由于大多数软件支持这个文件格式,所以常用于数据的储存与交互。
CSV 本质是文本,它的文件格式极度简单:数据一行一行的用文本保存起来而已,每条记录被分隔符分隔为字段,每条记录都有同样的字段序列。
以下是一个简单的 sites.csv 文件(存储在测试程序的相同目录下):

id,name,url,likes
1,Google,www.google.com,111
2,Nhooo,www.cainiaojc.com,222
3,Taobao,www.taobao.com,333

CSV 用逗号来分割列,如果数据中含有逗号,就要用双引号将整个数据块包括起来。
注意:包含非英文字符的文本要注意保存的编码,由于很多计算机普遍使用 UTF-8 编码,所以我是用 UTF-8 进行保存的。
注意: CSV 文件最后一行需要保留一个空行,不然执行程序会有警告信息。

Warning message:
In read.table(file = file, header = header, sep = sep, quote = quote,  :incomplete final line found by readTableHeader on 'sites.csv'

1.2、读取 CSV 文件

接下来我们就可以使用 read.csv() 函数来读取 CSV 文件的数据:

data <- read.csv("sites.csv", encoding="UTF-8")
print(data)

如果不设置 encoding 属性,read.csv 函数将默认以操作系统默认的文字编码进行读取,如果你使用的是 Windows 中文版系统且没有设置过系统的默认编码,那系统的默认编码应该是 GBK。所以大家请尽可能地统一文字编码以防出错。
执行以上代码输出结果为:

  id   name            url likes
1  1 Google www.google.com   111
2  2 Nhooo www.cainiaojc.com   222
3  3 Taobao www.taobao.com   333

read.csv() 函数返回的是数据框,我们可以很方便的对数据进行统计处理,以下示例我们查看行数和列数:

data <- read.csv("sites.csv", encoding="UTF-8")print(is.data.frame(data))  # 查看是否是数据框
print(ncol(data))  # 列数
print(nrow(data))  # 行数

执行以上代码输出结果为:

[1] TRUE
[1] 4
[1] 3

以下统计数据框中 likes 字段最大对数据:

data <- read.csv("sites.csv", encoding="UTF-8")
# likes 最大的数据
like <- max(data$likes)
print(like)

执行以上代码输出结果为:
[1] 333
我们也可以指定查找条件,类似 SQL where 子句一样查询数据,需要用到到函数是 subset()。
以下示例查找 likes 为 222 到数据:

data <- read.csv("sites.csv", encoding="UTF-8")
# likes 为 222 的数据
retval <- subset(data, likes == 222)
print(retval)

执行以上代码输出结果为:

  id   name            url likes
2  2 Nhooo www.cainiaojc.com   222

注意:条件语句等于使用 ==。
多个条件使用 & 分隔符,以下示例查找 likes 大于 1 name 为 Nhooo 的数据:

data <- read.csv("sites.csv", encoding="UTF-8")
# likes 大于 1 name 为 Nhooo 的数据
retval <- subset(data, likes > 1 & name=="Nhooo")
print(retval)

执行以上代码输出结果为:

id   name            url likes
2  2 Nhooo www.cainiaojc.com   222

1.3、保存为 CSV 文件

R 语言可以使用 write.csv() 函数将数据保存为 CSV 文件。
接着以上示例,我们将 likes 为 222 的数据 保存到 nhooo.csv 文件:

data <- read.csv("sites.csv", encoding="UTF-8")# likes 为 222 的数据
retval <- subset(data, likes == 222)# 写入新的文件
write.csv(retval,"nhooo.csv")
newdata <- read.csv("nhooo.csv")
print(newdata)

执行以上代码输出结果为:

 X id   name            url likes
1 2  2 Nhooo www.cainiaojc.com   222

X 来自数据集 newper,可以通过参数 row.names = FALSE 来删除它:

data <- read.csv("sites.csv", encoding="UTF-8")# likes 为 222 的数据
retval <- subset(data, likes == 222)# 写入新的文件
write.csv(retval,"nhooo.csv", row.names = FALSE)
newdata <- read.csv("nhooo.csv")
print(newdata)

执行以上代码输出结果为:

  id   name            url likes
1  2 Nhooo www.cainiaojc.com   222

执行完后,我们就可以看到 nhooo.csv 文件生成成功了。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【axios get请求 中文乱码】
  • 运维工具之veyon安装和使用
  • 基于node.js的宠物寄存管理系统,基于express的宠物寄存系统
  • redis 主从复制方案
  • ThreadLoad如何防止内存溢出
  • 【BUU】[NewStarCTF 2023 公开赛道]Final -CP读取文件内容
  • 【C++】实现日期类相关接口
  • 第131天:内网安全-横向移动Kerberos 攻击SPN扫描WinRMWinRSRDP
  • 【Python学习-UI界面】PyQt5 小部件1-Label
  • 一款专为IntelliJ IDEA用户设计的插件,极大简化Spring项目中的API调试过程,功能强大(附源码)
  • Unity Dots学习 (一)
  • 多媒体技术及应用课程思政网站
  • 为何用新版本的Supra软件,FPGA引脚输出不正常
  • 深入探索 MyBatis
  • 【车载开发系列】常见单片机烧录与调试设备
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • CentOS6 编译安装 redis-3.2.3
  • Java小白进阶笔记(3)-初级面向对象
  • Median of Two Sorted Arrays
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • session共享问题解决方案
  • SQLServer之创建数据库快照
  • SQLServer之索引简介
  • ucore操作系统实验笔记 - 重新理解中断
  • 不上全站https的网站你们就等着被恶心死吧
  • 类orAPI - 收藏集 - 掘金
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 普通函数和构造函数的区别
  • 为什么要用IPython/Jupyter?
  • 怎么把视频里的音乐提取出来
  • 追踪解析 FutureTask 源码
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • mysql面试题分组并合并列
  • 带你开发类似Pokemon Go的AR游戏
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #stm32整理(一)flash读写
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (超详细)语音信号处理之特征提取
  • (二)Kafka离线安装 - Zookeeper下载及安装
  • (二)pulsar安装在独立的docker中,python测试
  • (九)信息融合方式简介
  • (三)uboot源码分析
  • (已解决)什么是vue导航守卫
  • (转)nsfocus-绿盟科技笔试题目
  • .gitignore文件忽略的内容不生效问题解决
  • .mp4格式的视频为何不能通过video标签在chrome浏览器中播放?
  • .net core 6 redis操作类
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .Net小白的大学四年,内含面经
  • .stream().map与.stream().flatMap的使用
  • @synthesize和@dynamic分别有什么作用?
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945