R语言学习笔记总结
R语言初步-用dplyr进行数据转换
五个核心dplyr函数
按筛选值观测:filter()
对行进行重新排序:arrange()
对名称选取变量:select()
使用现有变量的函数创建新的变量:mutate()
mutate:变异 ; 突变 ; 改变 ; 数据修改 ; 变种 ; 变化 ; 产生突变
将多个值总结为一个摘要统计量:summarize()
工作规律:
- 第一个参数是数据框
- 随后的参数是变量名称
- 输出新的数据框
补充:
关于数据类型的说明
1.int:整数型变量
2.dbl:双精度浮点数形变量,实数
3.chr:字符向量,字符串
4.dttm:日期+时间格式的数据
5.lgl:逻辑型变量,TRUE或者FALSE
6.fctr:因子,R语言中,用它来表示具有固定数目的值的分类变量
7.data:日期型变量
install.packages("tidyverse")
install.packages("nycflights13")#仍然记得要先安装
library(nycflights13)#航班信息文件
library(tidyverse)
?flights#查看数据信息的说明书
flights#查看航班信息
1.使用filter() 筛选 行
filter(flights,month==1,day==1)
#运行后所有一月一日的航班信息自动形成新的数据:
注意R语言中的等于是==,注意输入细节。
运行结果:
# A tibble: 842 x 19
year month day dep_time sched_dep_time dep_delay arr_time
<int> <int> <int> <int> <int> <dbl> <int>
1 2013 1 1 517 515 2 830
2 2013 1 1 533 529 4 850
3 2013 1 1 542 540 2 923
4 2013 1 1 544 545 -1 1004
5 2013 1 1 554 600 -6 812
6 2013 1 1 554 558 -4 740
7 2013 1 1 555 600 -5 913
8 2013 1 1 557 600 -3 709
9 2013 1 1 557 600 -3 838
10 2013 1 1 558 600 -2 753
# ... with 832 more rows, and 12 more variables: sched_arr_time <int>,
# arr_delay <dbl>, carrier <chr>, flight <int>, tailnum <chr>,
# origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>, hour <dbl>,
# minute <dbl>, time_hour <dttm>
此时生成的新数据框只是一个展示,如果想要继续使用这个数据,那就需要~给他一个名分--比如赋值给Jan1
- 小小技巧~❀:Alt键和减号键一起按,可以快速打出R语言中的赋值符号
Jan1 <- filter(flights,month==1,day==1)
熟练操作后,筛选和赋值也可以同步进行:
(dec25 <- filter(flights,month==12,day==5))
#运行后直接展示生成的数据框
结果:
# A tibble: 969 x 19
year month day dep_time sched_dep_time dep_delay arr_time
<int> <int> <int> <int> <int> <dbl> <int>
1 2013 12 5 16 2159 137 117
2 2013 12 5 27 2035 232 143
3 2013 12 5 31 2229 122 153
4 2013 12 5 32 1930 302 228
5 2013 12 5 38 2359 39 505
6 2013 12 5 50 2046 244 233
7 2013 12 5 56 2359 57 510
8 2013 12 5 155 2130 265 445
9 2013 12 5 457 500 -3 637
10 2013 12 5 512 515 -3 753
# ... with 959 more rows, and 12 more variables: sched_arr_time <int>,
# arr_delay <dbl>, carrier <chr>, flight <int>, tailnum <chr>,
# origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>, hour <dbl>,
# minute <dbl>, time_hour <dttm>
关于基本运算符
- ">"
- ">="
- "<"
- "<="
- "!=" 不等于
- "==" 等于 *很容易和=搞混
常见错误举例:
sqrt(2)^2==2 #sqrt()根号
#运行:
[1] FALSE
1/49*49==1
#运行:
[1] FALSE
解释:计算机后台已经进行了计算,成为一个近似值所以sqrt(2)等于1.414(浮点数),平方运算后也不等于2,运行结果当然是FALSE。
比较浮点数是否相等的函数near():
near(sqrt(2)^2,2)
运行:
[1] TRUE
1/49*49==1
运行:
[1] TRUE
关于逻辑运算符
- "&" 与
- "|" 或
- "!" 非
比如:
filter(flights,month==11|month==12)
#运行后找到了11和12月运行的航班
注意以下写法是错误的:
filter(flights,month==11|12)
一种简写方式:
nov_dec <- filter(flights,month %in% c(11,12))
%in% 代表 month值是11,12的数据
简写形式:代表变量x(month)是y(11,12)值时的数据
x %in% y
逻辑运算符的用法比较复杂,在编写代码的过程中及时赋值,利于检查。
关于缺失值
NA即not available,表示未知值
但是未知的值≠缺失值:
未知的值本质上可以是任何一个量,两个NA是无法划等号的。但是缺失值缺却可以有准确的“定位”,给它一个名称之后仍可以参与运算,可以初步理解为未知数。
设定某个值是未知值的办法:
is.na(X)