原文链接 : 数据输入与输出
一. 使用变量赋值输入数据
1.1 知识描述
使用变量赋值来完成数据的输入,是几乎所有数据分析平台通用的基础内容,一般适用于人脑可以适应的小型数据样本,比如你现在是一名老师,十几名学生经历了期中考试,现在成绩已出,你需要知道学生成绩的相关统计数据,那么最直接的办法就是使用R的赋值输入,直接使用键盘敲入数据,本节将详细介绍如何使用R的赋值命令输入你所需要分析的数据。
1.2 相关知识
在数据的变量赋值输入关卡中,我们将以最常见的向量以及矩阵作为讲解的示例。对于向量,相信大家肯定不会陌生,我们曾经在物理、工程中也称之为矢量,是数学、物理学和工程科学等多个自然科学中的基本概念,什么意思呢?即指一个同时具有大小和方向,且满足平行四边形法则的几何对象。
就如同实训一中所讲,向量是一个极其专一的数据结构,在向量中不能容忍不同模式的数据出现,比如某一向量中的元素要么全是数值型,要么全是逻辑型,或者全是字符型。
首先我们令测试的向量命为test_vector
如上图所示,我们将十个数值型的数据输入至向量test_vector
中,分别为1-10
共10
个数,其中符号<-为
数据赋值符号,这一点区别于其他编程语言的=
号,如下所示,我们可以发现10
个数值型数据已经完成了输入并正确显示:
接下来我们完成字符型数据的向量输入,步骤与语句和数值型数据输入类似,如下所示:
首先依旧是需要以字段c
开头,表明接下来输入的数据结构是向量类型,然后对于字符型数据,我们需要使用英文的双引号将所需要输入的数据输入,然后以逗号作为间隔,依次完成输入,最后输入的形式如下,表示字符型数据已成功输入至对应向量结构中:
接下来作为变量赋值输入的巩固内容,我们将介绍如何完成矩阵的赋值输入,如下所示,我们的测试矩阵为test_matrix
:
对于矩阵的输入,和向量的输入一样,首先是一个首字段matrix,表明接下来输入的数据结构是矩阵,然后放入需要输入的具体数字,这里我们使用数值型数据进行输入,从5开始递增到54
一共50
个数据。我们知道矩阵的尺寸主要是行和列,使用nrow
控制矩阵的行数,使用ncol
控制矩阵的列数,如图所示行列值分别为10
和5
,如果不特别强调,在矩阵的输入中,对于数据的读取都是按列进行,如果需要按行读取,我们需要在列值后加入byrow=TRUE
,具体如下所示:
只要我们将byrow
的逻辑值置为TRUE
,并能实现矩阵数据的按行读入。不知道各位有没有看过笔者写的复杂网络实训,一般我们在一个关卡的最后会放置一个GIF动态图用以大家巩固和补漏,后续也会在R实训中陆续出现:
1.3 小测
本次编程任务是补全右侧代码片段中begin至end中间的代码,具体要求如下:
-
将数值型数据
4 5 6 7 8 9 10
输入至向量vector_num
中; -
将逻辑型数据
TRUE FALSE
输入至向量vector_log
中; -
将从
1
到100
的数值型数据输入至矩阵matrix_col
中,按列读入,行列值均为10
; -
将从
1
到100
的数值型数据输入至矩阵matrix_row
中,按行读入,行数为5
,列数为20
。
##### data_input.R#####
###### begin ######
#Input all kinds of data.
vector_num <- c(4,5,6,7,8,9,10)
vector_log <- c(TRUE,FALSE)
matrix_col <- matrix(1:100, nrow = 10, ncol = 10)
matrix_row <- matrix(1:100, nrow = 5, ncol = 20, byrow = TRUE)
###### end ######
vector_num
vector_log
matrix_col
matrix_row
运行结果为:
二. 带分隔符文件的输入
2.1 知识描述
使用赋值语句进行各种数据结构的输入可以在一定程度上满足数据分析人员的基本需求,但是对于真正的数据分析师而言,这仅仅是望梅止渴,试想动辄以GB、TB计的数据量用人手手动输入,那只能是天方夜谭,所以我们在本节将要讲解如何实现数据的大规模输入—CSV文件的输入方法。
2.2 相关知识
CSV
文件又叫逗号分隔值,其英文为Comma-Separated Values
,如果我们直译的话,就是字符分隔值,一般来讲数据之间以逗号进行分割,其文件以纯文本形式存储表格数据(数字和文本)。
相信大家对这一类文件非常熟悉,因为我们会经常使用到这一文件存储大规模数据集,笔者从事的复杂网络,其网络规模动辄百万千万级的节点数目,其网络信息也基本是以CSV
文件的形式在存储,那么在R语言中我们如何将其输入呢?
首先,要想实现CSV文件的输入,我们首先要将需要输入的CSV文件放入工作目录中,在本次示例中我们将示例
CSV文件exam.csv
放入版本库的本地文件夹,如下所示:
然后在软件中进入对应文件夹,如下所示:
进而选择将当前文件夹作为工作目录,如图所示,选中Set as working directory
,即可完成工作目录的重新选择,如下所示:
然后我们输入语句test_csv <- read.csv('exam.csv')
将工作目录中的csv
文件exercise_users
读取至表格test_csv
中。
对于csv
文件的输入,除了上述基本操作外,我们还可以追加几种数据微调形式,如下所示:
1)比如我们加入test_csv <-
;
read.csv(‘exercise_users.csv’,header=TRUE)
其中header
的逻辑值状态表示首行包含了变量名。
2)test_csv <- read.csv('exercise_users.csv',header=TRUE,sep",")
表示csv
文件中的分隔符是逗号。
本关有不少操作细节需要大家进行记忆,没掌握没关系,补漏GIF给你助推:
2.2 小测
exam.csv
:exam.csv文件下载地址
提取码: ace0
本次编程任务是补全右侧代码片段中begin至end中间的代码,所需要写入的csv文件名为exam.csv,具体要求如下:
-
首先将
csv
文件以最基本形式read.csv
输入至表格test_1
; -
将
header
的逻辑值状态确定为TRUE
,然后将csv
文件输入至表格test_2
; -
利用
sep
明确表示csv
文件中的分隔符是逗号,然后将csv
文件输入至表格test_3
。
##### data_input_csv.R#####
###### begin ######
#Input the csv file.
test_1 <- read.csv('exam.csv')
test_2 <-read.csv('exam.csv', header=TRUE)
test_3 <- read.csv('exam.csv',header=TRUE,sep=",")
###### end ######
test_1
test_2
test_3
运行结果为: