{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 数据读取\n", "\n", "本节介绍一些实用的数据处理函数(如行、列合并),以及如何从各种数据源读、写数据。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 实用函数\n", "\n", "| 函数 | 含义 |\n", "| --- | --- |\n", "| length() | 对象的长度。如 2 行 3 列的矩阵,其长度为 6。 |\n", "| dim() | 对象的维度。如 2 3 表示对象是二维的,有 2 行 3 列。 |\n", "| str() | 对象的结构。常用于查看数据框各列的数据类型、或者因子的分级数量。 |\n", "| class() | 对象的类。比如矩阵的返回结果是 matrix。 |\n", "| typeof() | 对象内数据的类型。比如矩阵的返回结果是 integer。 |\n", "| mode() | 对象的模式。比如矩阵会返回 numeric。 |\n", "| names() | 对象中各成分的名称。 |\n", "| cbind() | 按列合并多个对象。 |\n", "| rbind() | 按行合并多个对象。 |\n", "| *objectname* | 输出对象。 |\n", "| head() | 输出对象的前部,对于数据框而言是前6行。通过 head(*obj*, N) 来指定输出前 N 行。 |\n", "| tail() | 类似地,输出对象的后部。 |\n", "| ls(NULL) | 无参数函数。显示当前所有对象的名称列表。 |\n", "| rm() | 删除单个或多个对象。使用 rm(list = ls()) 可以删除除句点开头的隐藏对象外的所有对象。 |\n", "\n", "一个 ls() 函数的例子:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "'a'" ], "text/latex": [ "'a'" ], "text/markdown": [ "'a'" ], "text/plain": [ "[1] \"a\"" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "a <- matrix(1:6, nrow=2, ncol=3)\n", "ls() # 目前的对象只有 a" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 手动输入\n", "\n", "使用需要赋值的 edit() 函数,或者无需写在赋值语句内的 fix() 函数。" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "dt <- data.frame(age = numeric(0), gender = character(0), weight = numeric(0))\n", "\n", "# dt <- edit(dt) # 需要自赋值\n", "# fix(dt) # 无需自赋值" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "遗憾的是,在 Jupyter Notebook 现行的版本中,尚且不支持 edit() 函数。不过用户可以使用 fix() 函数。\n", "\n", "## 读取文件\n", "\n", "关于怎样读取来自 URL 地址的网络文件,R 可以实现,但这里不做讨论。以下只讨论本地数据源的读写。\n", "\n", "### 分隔符文件\n", "\n", "利用 read.table() 函数即可。其常用的参数有:\n", "\n", "```r\n", "read.table(file, [header=T/F, sep=\" \", row.names=, col.names=, na.strings=, \n", " colClasses=, quote=, skip=, stringAsFactors=T/F,])\n", "```\n", " \n", "其中,可选参数的含义大多较好理解:header 表示文件首行是否是列名而不是数据;sep 是列间分隔符;na.strings 指定一个字符向量,内部所有的元素在读取时会被转换为 NA;colClasses 用于指派各列的类型,如 =c(\"numeric\", \"character\", \"NULL\") 指定了前两列的类型并跳过了第三列;skip 用于跳过文件的最开始的若干行;stringAsFactors 为 TRUE(默认值)时表示字符向量按因子处理,设为 FALSE 可以提升大文本处理速度。" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
X5.1 | X3.5 | X1.4 | X0.2 | Iris.setosa |
---|---|---|---|---|
4.9 | 3.0 | 1.4 | 0.2 | Iris-setosa |
4.7 | 3.2 | 1.3 | 0.2 | Iris-setosa |
4.6 | 3.1 | 1.5 | 0.2 | Iris-setosa |
5.0 | 3.6 | 1.4 | 0.2 | Iris-setosa |
5.4 | 3.9 | 1.7 | 0.4 | Iris-setosa |
4.6 | 3.4 | 1.4 | 0.3 | Iris-setosa |