您的位置: 首页 - 站长

ink域名网站网站开发与编程的区别

当前位置: 首页 > news >正文

ink域名网站,网站开发与编程的区别,成都房地产官网,淘宝客网站如何做SEO学习笔记#xff0c;仅供学习使用。 目录 1-什么是整洁的数据#xff1f; 2-宽表变成长表
示例1#xff1a; 示例2#xff1a; 示例3#xff1a; 3-长表变宽表 示例1#xff1a; 示例2#xff1a; 1-什么是整洁的数据#xff1f; 按照Hadley的表述#xf…学习笔记仅供学习使用。 目录 1-什么是整洁的数据 2-宽表变成长表  示例1 示例2 示例3 3-长表变宽表 示例1 示例2 1-什么是整洁的数据 按照Hadley的表述整洁的数据具有如下特点 每个变量构成一列即属性相同的变量自成一列每个观测构成一行每个观测的每个变量值构成一个单元格 不满足上述条件的数据称为脏的、不整洁的数据它们往往具有如下特点 列名不是变量名是值多个变量放在一列变量既放在行又放在列多种类型的观测单元在同一个单元格即每个单元格不是一个数值一个观测单元放在多个表 数据重塑tidyverse系列包中的函数操作的都是整洁的数据框而不整洁的数据首先需要把它们变成整洁的数据这个过程就是数据重塑 数据重塑包括长宽表转化、拆分/合并列、方形化。其中长宽表转化使用的是pivot_longer()和pivot_wider()函数 脏数据示例及说明 这个示例中男和女都属于性别所以可以将男、女归为一个变量。违反了整洁数据要求中的第一条一列是一个变量。 在这个示例中因为年龄和体重这两个变量放到了一列中虽然使用了反斜杠分隔开人类按照常识很容易理解但是计算机并不会懂其只会讲两列本来是数值类型的数据当成是字符串来处理这违反了整洁数据的第三条每个观测的每个变量构成一个单元格。 这个示例中整洁数据的三条要求均未满足。 让数据变整洁的关键是要学会区分变量、观测、值。 2-宽表变成长表  宽表指数据集对所有的变量进行了明确的细分表比较宽本来该放在单元格中的值却放在了列名上比如男性女性应该放在单元格中的内容却成了某两列的列名 长表指数据集中包含分类变量的数据。 使用tidyr包中的pivot_longer()函数可以将宽表转换为长表使用pivot_wider()函数可以将长表转换为宽表它是pivot_longer()函数的逆变换。 语法介绍 pivot_longer(data, cols, names_to, values_to, values_drop_na, …) 其中 data要重塑的数据框cols:用选择列语法 选择要变形的列即要处理的列names_to:设置列名具体来说为了存放 要处理的列 的列名新建一列或者几列根据具体问题对新建的列设置一个新的列名values_to: 设置列名具体来说 存放 要处理的列其下单元格中的值为这一列设置一个新的列名。values_drop_na:是否忽略变形列中的缺失值NA,not available如果变形列的列名除了想要的“内容”外还包括前缀、变量名分隔符、正则表达式分组捕获模式则可以借助参数names_prefix、names_sep、names_pattern来提取出想要的“内容”注意这里的“内容”指的是列名中想要的部分。 示例1 宽表 变 长表 将要重塑的列的列名 存放在一列中 df - read.csv(配套数据/分省年度GDP.csv)df地区 X2019年 X2018年 X2017年 1 北京市 35371.28 33105.97 28014.94 2 天津市 14104.28 13362.92 18549.19 3 河北省 35104.52 32494.61 34016.32 4 黑龙江省 13612.68 12846.48 15902.68 df %%pivot_longer(-地区, names_to 年份, values_toGDP)

A tibble: 12 × 3地区 年份 GDPchr chr dbl1 北京市 X2019年 35371.2 北京市 X2018年 33106.3 北京市 X2017年 28015.4 天津市 X2019年 14104.5 天津市 X2018年 13363.6 天津市 X2017年 18549.7 河北省 X2019年 35105.8 河北省 X2018年 32495.9 河北省 X2017年 34016.

10 黑龙江省 X2019年 13613. 11 黑龙江省 X2018年 12846. 12 黑龙江省 X2017年 15903. df是一个宽表除了地区列剩下的所有列是我们想要重塑的列在pivot_longer()函数中第一个参数是我们要处理的数据框由于这里使用的是管道操作所以这个函数的第一个参数就省略掉了第二个参数是要重塑的列这里表示除了地区外剩下的所有列都是我们要重塑的第三个参数names_to年份表示原始数据中我们要重塑的列这列的列名存放在一个新列中我们通过names_to为这个新列取一个列名在这个案例中为这个新列取名为“年份”。第四个参数是values_to“GDP”表示原始数据中我们要重塑的列这列的单元格中存放的值现在放在一个新列中我们需要为这个新列取一个列名这个列名为“GDP”。 从这个示例中可以看到我们重塑的列把这些重塑列的列名提取出来放在一个新列的单元格中并且进行循环重复出现即x2019, x2018x2017为一个循环。 示例2 宽表变长表 将要重塑的列的列名 存放在多个列中 原始数据宽表 目标 转化为如下长表 分析: 这个数据是收集每个家庭小孩的信息比如家庭1中有两个孩子child1和child2并收集这些小孩的出生日期和性别。 原始数据中我们要重塑的列是除了family列之外的所有列这些列的列名使用下划线进行了分割我们想要让数据变成3列即child列、dob出生日期、gender性别。其中dob、gender这两列保持不变不用进行任何的操作child1,child2变成新的一列并为这一列取名为child。 load(配套数据/family.rda)knitr::kable(family, alignc)| family | dob_child1 | dob_child2 | gender_child1 | gender_child2 |

1 1998-11-26 2000-01-29 1 2
2 1996-06-22 NA 2 NA
3 2002-07-11 2004-04-05 2 2
4 2004-10-10 2009-08-27 1 1
5 2000-12-05 2005-02-28 2 1

A tibble: 9 × 4family child dob genderint chr date int

1 1 child1 1998-11-26 1 2 1 child2 2000-01-29 2 3 2 child1 1996-06-22 2 4 3 child1 2002-07-11 2 5 3 child2 2004-04-05 2 6 4 child1 2004-10-10 1 7 4 child2 2009-08-27 1 8 5 child1 2000-12-05 2 9 5 child2 2005-02-28 1 代码解释 -family表示要变形的列是除了family列之外的列。.names_sep_表示重塑的列的列名使用下划线进行分割。names_toc(.value,child)用于设置长表中新创建的列的列名。具体来说要重塑的列的列名名使用下划线分为两部分第一部分为出生年月和性别第二部分是小孩1和小孩2. 第一部分产生的列信息列名其下的单元格内容保持不变;child为新创建的列的列名这个列用来存放要重塑列的列名的第二部分的内容即小孩1和小孩2.values_drop_naTRUE:表示在数据重塑中忽略要变形列中的缺失值NA。 示例3 宽表变长表 将要重塑的列的列名 存放在多个列中 原始数据宽表 目标转化为如下形式的长表 df - read.csv(配套数据/参赛队信息.csv)df队员1姓名 队员1专业 队员2姓名 队员2专业 队员3姓名 队员3专业 1 张三 数学 李四 英语 王五 统计学 2 赵六 经济学 钱七 数学 孙八 计算机df %%pivot_longer(everything(),names_toc(队员, .value),names_pattern (.\d)(.))

A tibble: 6 × 3队员 姓名 专业 chr chr chr

1 队员1 张三 数学
2 队员2 李四 英语
3 队员3 王五 统计学 4 队员1 赵六 经济学 5 队员2 钱七 数学
6 队员3 孙八 计算机 语法解释 everything():表示选择所有列即要重塑的列为所有的列names_pattern (.\d)(.) 使用该参数 和 正则表达式进行分组捕获。\d表示匹配数字即0-9*表示除换行以外的任何字符、字母、数字*至少匹配一次。names_toc(队员, .value)表示新创建列的列名新创建的列的列名为“队员”剩下的列及信息保持不变。具体来说将要重塑的列的列名使用正则表达式分成了两部分第一部分的内容为child1,child2,这里为第一部分列名创建一个新列设置该新列的列名为child,第二部分为列的信息列名和单元格部分保持不变比如这个例子中第二部分的列名有两个姓名 和专业这两列保持不变保持原来的列名和列下的单元格内容 3-长表变宽表 使用tidyr包中的pivot_wider()函数来实现 长表变宽表 pivot_wider(data, id_cols, names_from, values_from, values_fill,…) 其中 data表示要重塑的数据框id_cols唯一识别观测的列默认是除了names_fromvalues_from指定列之外的列。names_from:指定列名来自哪个变量列values_from:指定列值来自哪个变量列values_fill若表变宽之后单元格值确实要设置用何值填充。还有一些用于帮助修复列名的参数names_prefix, names_sep, names_glue. 示例1 只有一个列名和一个列值,  列名来自Type 这一列 列值来自Heads 这一列 在整洁数据中可以使用列名来访问这一整列的信息。 load(配套数据/animals.rda)animals

A tibble: 228 × 3Type Year Headschr int dbl1 Sheep 2015 24943.2 Cattle 1972 2189.3 Camel 1985 559 4 Camel 1995 368.5 Camel 1997 355.6 Goat 1977 4411.7 Cattle 1979 2477.8 Cattle 2014 3414.9 Cattle 1996 3476.

10 Cattle 2017 4388.

ℹ 218 more rows

ℹ Use print(n …) to see more rowsanimals %%pivot_wider(names_fromType, values_fromHeads, values_fill 0)

A tibble: 48 × 6Year Sheep Cattle Camel Goat Horseint dbl dbl dbl dbl dbl1 2015 24943. 3780. 368. 23593. 3295.2 1972 13716. 2189. 625. 4338. 2239.3 1985 13249. 2408. 559 4299. 1971 4 1995 0 3317. 368. 8521. 2684.5 1997 14166. 3613. 355. 10265. 2893.6 1977 13430. 2388. 609 4411. 2104.7 1979 14400. 2477. 614. 4715. 2079.8 2014 23215. 3414. 349. 22009. 0 9 1996 13561. 3476. 358. 9135. 2770.

10 2017 30110. 4388. 434. 27347. 3940.

ℹ 38 more rows

ℹ Use print(n …) to see more rows

可以看到animals这个原始数据的第一列Type中值是重复出现的将这一列中的单元格内容即动物的种类作为新的变量有几个种类就创建几列使用names_from指定新创建的列名来自原始数据的哪列这里使用的数据框的列名表示可以访问这一列的信息列名单元格内容values_from用于指定新创建的列的单元格的内容 来自原始数据的哪一列。 示例2 只有多个列名列或多个值列。下面这个例子展示了有两个值列即estimate和moe us_rent_income#tidyr自带的数据集

A tibble: 104 × 5GEOID NAME variable estimate moechr chr chr dbl dbl1 01 Alabama income 24476 1362 01 Alabama rent 747 33 02 Alaska income 32940 5084 02 Alaska rent 1200 135 04 Arizona income 27517 1486 04 Arizona rent 972 47 05 Arkansas income 23789 1658 05 Arkansas rent 709 59 06 California income 29454 109

10 06 California rent 1358 3

ℹ 94 more rows

ℹ Use print(n …) to see more rowsus_rent_income%%pivot_wider(names_fromvariable, values_fromc(estimate, moe))

A tibble: 52 × 6GEOID NAME estimate_income estimate_rent moe_income moe_rentchr chr dbl dbl dbl dbl1 01 Alabama 24476 747 136 32 02 Alaska 32940 1200 508 133 04 Arizona 27517 972 148 44 05 Arkansas 23789 709 165 55 06 California 29454 1358 109 36 08 Colorado 32401 1125 109 57 09 Connecticut 35326 1123 195 58 10 Delaware 31560 1076 247 109 11 District of Col… 43198 1424 681 17

10 12 Florida 25952 1077 70 3

ℹ 42 more rows

ℹ Use print(n …) to see more rows

宽表和长表 宽表变长表过程中要将待重塑的列“整合”成几列抽象看来就是多列“整合”成比之前少的列即将一个宽表 变成一个 长表。这里整合是打引号的是说将要重塑的列的信息进行整合通过创建新列和保留某些列来完成这个整合操作将分类变量比如男性和女性男性作为一个变量自成一列女性作为一个变量自成一列宽表变长表这个过程是将男性和女性归为分为变量中取名为性别在创建新列的时候势必要为列取列名这个取列名一定是一个字符串性别这个性别列的单元格内容由男和女重复循环出现原始数据列名为男的这一列下面的单元格内容和女性的这一列下面的单元格内容自成一列也需要为这个单元格值创建新列的时候取一个列名列名通常使用字符串表示。 长表变宽表的过程中长表的变量即一列下面的内容是重复出现的这个时候要把重复出现的内容提取出来让这些值变成新的列名所以设置names_from即新的列名来自原始数据的哪一列此时该参数后面等于的是列名而不是字符串。有了新的列名之后我们需要为新的列下面的单元格内容进行填充用什么值进行填充使用的是原始长表的某几列具体问题具体分析的值进行填充因此values_from后面填写的是 原始数据的列名不带引号的不是字符串。 示例数据来源 R语言编程基于tidyverse-异步社区-致力于优质IT知识的出版和分享 (epubit.com) 参考 《R语言编程》2023年2月出版人民邮电出版社 《R数据科学实战工具详解与案例分析》2019年6月出版机械工业出版社 R语言数据可视化实战微视频全解版—大数据专业图表从入门到精通。2022年2月出版电子工业出版社