R数据科学day2-1
如果不想麻烦每次设置工作目录,可以多保存几个R文件。需要哪个就打开哪个。
工作流-基础
-
使用RStudio 快捷键:Alt+-(Alt 加上减号)。RStudio 会自动在<- 的两端加上空格。
-
对象名称必须以字母开头,并且只能包含字母、数字、_ 和.
-
快速输入变量,输入开头,按Tab;再次输入可以按后按Ctrl+ ↑。
-
Alt+Shift+K显示所有快捷键。
dplyr数据转换
终于知道变量名下面的<chr>代表啥了。
• int 表示整数型变量。
• dbl 表示双精度浮点数型变量,或称实数。
• chr 表示字符向量,或称字符串。
• dttm 表示日期时间(日期+ 时间)型变量。
• lgl 表示逻辑型变量,是一个仅包括TRUE 和FALSE 的向量。
• fctr 表示因子,R 用其来表示具有固定数目的值的分类变量。
• date 表示日期型变量。
1. 准备
install.packages("nycflights13") library(nycflights13) library(tidyverse)
因为要用的数据flights是nycflights13包里的,所以要先加载。
-- Conflicts ------------------------------------- tidyverse_conflicts() --
x dplyr::filter() masks stats::filter()
x dplyr::lag() masks stats::lag()
dplyr包覆盖了基础R包中的两个函数,如果你要使用被覆盖的函数,需要输入他们的完整名称,以::连接包名和函数名。
flights #就瞅一眼,看看几行几列
?flights #好好瞅瞅每列表示什么意思
View(flights)#以表格的形式好好瞅瞅
class(flights)#了解他的数据类型
2. dplyr包的核心函数
• 按变量筛选观测值(filter())。
• 对行进行重新排序(arrange())。
• 按名称选取变量(select())。
• 使用现有变量的函数创建新变量(mutate())。
• 将多个值总结为一个摘要统计量(summarize())。
分组操作group_by(),可以和以上函数联合使用。
dplyr函数不修改原数据框,只从原数据框中生成新数据框,如果新生成的数据框不赋值给一个新的变量,那么就会丢失。
R要么输出结果,要么赋值。将赋值语句用括号括起来则可以同时完成这两种操作。
filter(flights, month == 1, day == 1) #输出结果
jan1 <- filter(flights, month == 1, day == 1) #赋值
(dec25 <- filter(flights, month == 12, day == 25))#两种操作
3.filter进行筛选
(1) 比较运算符
比较运算符:>、>=、<、<=、!=(不等于)和==(等于)
=是赋值操作,a=3是将3这个数值赋值给a这个变量。而==才是平时的数学中的等于,意思是比较是否相等,如a==b意思是a的值是否和b的值相等
near(1 / 49 * 49, 1)
#> [1] TRUE
计算机使用的是有限精度运算(显然无法存储无限位的数),因此请记住,你看到的每个
数都是一个近似值。比较浮点数是否相等时,不能使用==,而应该使用near()。
(2)逻辑元算法
& 表示“与”、
| 表示“或”、
! 表示“非”
x %in% y。这会选取出x 是y 中的一个值时的所有行。
filter(flights, month == 11 | month == 12) filter(flights, month %in% c(11, 12))
表达意思相同。
注:%in%是非常好的一个函数,解决了我以前的一个大问题。比如我想找到excel中c列中和a列相同的行。
只需要c%in%a就可以了。
!(x & y)等价于!x | !y,!(x | y)等价于!x & !y
(3)缺失值
NA,表示有一个值,但是不知道具体是啥,相当于个陌生人。而NULL相当于,根本没人。。。
NA与NULL的区分:一个元素值全为NA的向量,它的长度是存在的,就等于元素的个数。而如果把一个向量的所有元素的值都设为NULL,这个向量就变成了“空值”,其长度为0,表明“空无一物”。
注:NA为缺失值,is.na()判断是否为缺失值,filter() 只能筛选出条件为TRUE 的行;它会排除那些条件为FALSE 和NA 的行。如果想保留缺失值,可以用这个函数