dplyr学习(1)
先写点无关紧要的:
本来想用Rmarkdown,毕竟可以输出每步结果。但是Rmarkdown生成的html格式比word更方便阅读。后来想想算了,就用最简单的吧。
笔记开始:
先记录一下:select、filter、和slice
(1)select提取列
library(ggplot2) #get diamonds data
library(magrittr)
library(dplyr)
#根据列名提取列
select(diamonds, carat, price)
#如果用R基本的数据框操作也是可以的。
diamonds[,c("carat", "price")]
#现在比较流行管道符,
diamonds %>% select(carat, price)
diamonds %>% select(c(carat, price))
diamonds %>% select(one_of('carat', 'price'))
#这三种方法得到的结果是一样
#向量
theCols <- c('carat', 'price')
diamonds %>% select(one_of(theCols))
#用列的号码也是可以的
select(diamonds, 1, 7)
diamonds %>% select(1, 7)
diamonds %>% select(starts_with('c'))
diamonds %>% select(ends_with('e'))
diamonds %>% select(contains('1'))
#正则表达式
diamonds %>% select(matches('r.+t'))
#去掉某列,只需要加负号,如diamonds %>% select(-starts_with('c'))
(2)filter 提取特定行
#cut列的值为Ideal的行
diamonds %>% filter(cut == 'Ideal')
diamonds %>% filter_("cut == 'Ideal'")
diamonds %>% filter(cut %in% c('Ideal', 'Good'))
diamonds %>% filter(price >= 1000)
diamonds %>% filter(price != 1000)
diamonds %>% filter(carat > 2, price > 1000)
diamonds %>% filter(carat > 2 & price > 1000)
diamonds %>% filter(carat > 2 | price > 1000)
#列名及其值都作为变量
theCol <- 'cut'
theCut <- 'Ideal'
diamonds %>% filter_(sprintf("%s == '%s'", theCol, theCut))
(3)slice 通过行号选择行
diamonds %>% slice(1:5)
diamonds %>% slice(1:5, 8, 15:20)
diamonds %>% slice(-5) #显示除了第5行之外的行
先记录一下这三个函数的用法吧,接下来是mutate、summarize、和group_by。
赞 (0)