吾本轻狂|data,它又有什么好处,R数据分析:何为Tidy

“Happyfamiliesareallalike;everyunhappyfamilyisunhappyinitsownway.”––LeoTolstoy
“Tidydatasetsareallalike,buteverymessydatasetismessyinitsownway.”––HadleyWickham
【吾本轻狂|data,它又有什么好处,R数据分析:何为Tidy】上面两句话摘自《RforDataScience》 , 今天就尝试着给大家写写什么是整齐数据 , 为什么整齐数据很重要 。
整齐数据Tidydata我们接收到的数据很多都是杂乱无章的 , 为了进行数据的预处理 , 我们需要先把数据转换为整齐的数据 。
整齐数据满足的条件有:
每一个变量都有自己独立的一列每一个观测值都有自己独立的一行每一个数据都是独立的单元格
table1#>#Atibble:6x4#>countryyearcasespopulation#>#>1Afghanistan199974519987071#>2Afghanistan2000266620595360#>3Brazil199937737172006362#>4Brazil200080488174504898#>5China19992122581272915272#>6China20002137661280428583table2#>#Atibble:12x4#>countryyeartypecount#>#>1Afghanistan1999cases745#>2Afghanistan1999population19987071#>3Afghanistan2000cases2666#>4Afghanistan2000population20595360#>5Brazil1999cases37737#>6Brazil1999population172006362#>#…with6morerowstable3#>#Atibble:6x3#>countryyearrate#>*#>1Afghanistan1999745/19987071#>2Afghanistan20002666/20595360#>3Brazil199937737/172006362#>4Brazil200080488/174504898#>5China1999212258/1272915272#>6China2000213766/1280428583#Spreadacrosstwotibblestable4a#cases#>#Atibble:3x3#>country`1999``2000`#>*#>1Afghanistan7452666#>2Brazil3773780488#>3China212258213766table4b#population#>#Atibble:3x3#>country`1999``2000`#>*#>1Afghanistan1998707120595360#>2Brazil172006362174504898#>3China12729152721280428583你看对于同一个数据 , 我们可以有以上4种表示方法 , 首先如果每个人都用自己的表示法肯定会乱套 , 所以我们得选一种大家都认可的表示方法以方便交流 , 但是为什么选整齐数据呢?原因如下:
tidy的特征是使用dplyr中mutate,summary等函数的基础整齐数据可以很方便的转化为其他的类型怎么理解第二个优点呢?就是我们可以很方便的将table1(整齐数据)转化为table3 , 代码如下:
table1%>%mutate(rate=cases/population)相应的其他的转化其实也很方便 。 接着看
如何将非整齐数据转化为整齐数据我们拿到的数据很多时候是原始录入的数据 , 为了录入方便 , 很多时候是不整齐的 。
比如下面的table4 , 它的每一行其实代表了2个观测 , 1999年和2000年 , 1999和2000也并非变量而是年份这个变量下面的值 。
table4a#>#Atibble:3x3#>country`1999``2000`#>*#>1Afghanistan7452666#>2Brazil3773780488#>3China212258213766如何将上面的table变为整齐数据呢?
我们需要用到pivot_longer() , 我们需要定义3个参数:
是值而非变量的列 , 本例中:1999and2000容纳原先列名的新变量名 , 本例中:year容纳原先列的值的变量 , 本例中:cases代码如下:
table4a%>%pivot_longer(c(`1999`,`2000`),names_to="year",values_to="cases")#>#Atibble:6x3#>countryyearcases#>#>1Afghanistan1999745#>2Afghanistan20002666#>3Brazil199937737#>4Brazil200080488#>5China1999212258#>6China2000213766看看整个转化过程: