用R和tidyverse加载和清理数据
tidyverse是一个软件包的集合,由于共享数据表示和API设计,它们可以很好地协同工作。tidyverse包的目的是使其能够通过一个命令简单地安装和加载核心tidyverse包。
要安装tidyverse,请将以下代码放入RStudio。
输出
tidyr包将被用于数据清理,readr包将被用于数据加载。
使用readr加载数据
亲爱的朋友们,在本教程中,我们将使用readr包的read CSV函数读取和解析一个CSV文件。CSV(Comma-Separated Values)文件包含由逗号分隔的数据。在下面的例子中,将使用以下CSV文件。开始时,把要读的文件的路径传给read_csv函数。read CSV函数会生成可以附加到变量上的tibbles。
输出
内联CSV输入是非常有用的,这些选项也可以帮助你进行正常的文件解析。
输出
CSV文件的第一行是列的名称。然而,还有其他选择来处理例外情况。
输出
输出
如果第一行不是列的名称,那么我们可以这样做
输出
输出
输出
输出
不整齐的数据的例子以及如何处理它。
pivot_wider()
在表2中,一个观察值分散在几行中,这可以通过使用pivot_wider()选项来修复
- 从中获取变量名称的列。在这里,它是类型化的。
- 要取值的列。这里,它是计数的。
输出
输出
separate()
在表三中,我们必须在一列中分离两个值。
输出
输出
“cases “和 “population “是字符列,这是 separate() 的默认行为。它让列的类型保持不变,我们可以用 “convert = TRUE “转换为更好的类型。
输出
你也可以给 “sep “传递一个整数,它将把整数解释为要分割的位置。索引从左边的1和右边的-1开始。
输出
pivot_longer()
当某些列名不是变量的名称,而是变量的值时。
- 列的名称是数值而不是变量的集合。在这个例子中,这些是 “1999 “和 “2000 “列。
- 这里要把列名移到的变量名称是 “年”。
- 将列值移到这里的变量名称是 “cases”。
输出
输出
unite()
使用 “unite() “来重新连接我们在上一个例子中创建的世纪和年份列。”unite() “需要一个tibble和要创建的新变量的名称,以及一个要合并的列。
输出
我们还需要使用sep参数,因为在默认情况下,R会在不同列的值之间放置一个下划线(_)。这里我们不需要任何分隔符,所以我们使用””。
输出
缺失的值
一个数值可以通过两种方式缺失。
- 明确地–不存在。
- 隐性地–不存在于数据中。
这里有两个缺失值。
- 1999年 “中国 “的人口是明确缺失的,因为其单元格有NA。
- 2000年 “巴西 “的人口是明确缺失的,因为它没有出现在数据中。
我们可以通过在列中加入年份使隐性缺失值显性化。
输出
你可以在 “pivot_longer() “中设置 “values_drop_na = TRUE”,将显性的缺失值变为隐性的。
输出
complete()
complete()接收一组列,并找到所有唯一的组合,必要时填入明确的NA。
输出
fill()
用fill()填补那些缺失的值。用最近的非缺失值(有时称为结转的最后一个观察值)来替换缺失值。
输出