整齐数据
Hadley Wickham对于整齐数据的定义
- 每个变量必须有自己的列
- 每个观察(测量值)必须有自己的行
- 每个值都必须有自己的位置
我对整齐数据的一些理解
- 有效缺失和隐藏缺失被标注
- 变量可以是计算,但是要具体标注
- 变量名称不用值来表示
- 多重变量不要储存于一个列中
参考文件
Cleaning and visualizing genomic data: a case study in tidy analysis
http://varianceexplained.org/r/tidy-genomics/
下面我将列出我认为较为关键的整齐数据处理函数及其如何作用
- gather函数(可以使用内置数据集table1-3尝试)
例1
列名称包括 country 1999 2000
我想要把1999列和2000列合并成一列名称为year,把1999及2000列下的测量值合并在一起重命名为cases。
gather(data,'1999','2000',key="year",value="cases")
gather是一种长转宽的函数,也就是=转变成||...hhh...好鬼畜
与gather函数相反的是spread函数
spread(data,key="year",value="cases")
- separate函数
table3
A tibble: 6 x 3
country year rate
<chr> <int> <chr>
Afghanistan 1999 745/19987071
separate(table3,rate ,into=c("cases","population"),convert=T,sep="|")
拆分table3数据中的rate变量,拆分为cases和population,间隔符为|
unite()函数与separate函数正好相反,是一个捏在一起的函数
3.缺失值
缺失值像一个蠕虫,哗哗的侵蚀你的计算数据
在前面的学习中我们已经学会了如何排除缺失值,然而有一些时候我们不能排除缺失值
那么应该用三种办法
- 删除缺失值所在的行drop_na函数
- 根据上下文写一个一样的 fill函数
- 同一列的空值填一个一样的 replace_na函数
书中使用一个spread+gather函数有效的除去了缺失值也不失为一个好的办法
还有模型补缺的方法比较上述方法精确很多,但是也有适用条件。
complete函数可以查看列中的缺失值
网友评论