R_Datacamp3(2018-07-20——2018-07-29)

Data Manipulation in R with dplyr用dplyr包来处理数据

  • Introduction to dplyr and tbls对于dplyr和tbls的简介

tbl_df()将data.frame格式的数据转化为tibble格式,一种特殊的data.frame格式,使其更易观察、处理。
two <- c("AA", "AS")
lut <- c("AA" = "American",
"AS" = "Alaska",
"B6" = "JetBlue")
two <- lut[two]
two可以找出两个向量中相关联的信息

  • Select and mutate

select(), which returns a subset of the columns,
filter(), that is able to return a subset of the rows,
arrange(), that reorders the rows according to single or multiple variables,
mutate(), used to add columns from existing data,
summarise(), which reduces each group to a single row by calculating aggregate measures.
starts_with("X"): every name that starts with "X",
ends_with("X"): every name that ends with "X",
contains("X"): every name that contains "X",
matches("X"): every name that matches "X", where "X" can be a regular expression,
num_range("x", 1:5): the variables named x01, x02, x03, x04 and x05,
one_of(x): every name that appears in x, which should be a character vector.

  • Filter and arrange过滤和安排

library(dplyr)
x %in% c(a, b, c), TRUE if x is in the vector c(a, b, c)
c1 <- filter(hflights, Dest == "JFK")过滤一遍符合条件的出来
c2 <- mutate(c1, Date = paste(Year, Month, DayofMonth, sep = "-"))新建一列
select(c2, Date, DepTime, ArrTime, TailNum)选择部分列
arrange(dtc, DepDelay)然后用arrange进行分类排序,arrange括号中desc()表示由大到小的逆序排列
summarise(filter(hflights, Diverted == 1), max_div = max(Distance))用summarise对数据进行分类汇总,括号中第一个数为想要进行分类的全部数据,后面的为各个类别维度。

  • Summarise and the pipe operator总结和操作

min(x) - 最小值
max(x) - 最大值
mean(x) - 平均数
median(x) - 中位数
quantile(x, p) - p分位数
sd(x) - 标准差
var(x) - 方差.
IQR(x) - Inter Quartile Range (IQR) of vector x.

diff(range(x)) - 向量x的长度
temp1 <- filter(hflights, !is.na(ArrDelay))筛选ArrDelay列中含有NA的行

first(x) - The first element of vector x.
last(x) - The last element of vector x.
nth(x, n) - The nth element of vector x.
n() - The number of rows in the data.frame or group of observations that summarise() describes.
n_distinct(x) - The number of unique values in vector x.

summarise(n_non = n(),
...................n_dest = n(Dest),
...................min_dist = min(Distance),
...................max_dist = max(Distance)) summarise()的格式

  • Group_by and working with databases分组和操作数据库

Joining Data in R with dplyr

  • Mutating joins增加链接

left_join(x, y)将y添加到x,同理right_join()
bands2 <- left_join(bands, artists, by = c("first", "last"))
setequal()查看俩个是否相等
semi_join()
songs %>%
semi_join(labels, by = "album") %>% songs中的行要匹配labels中的行

  • Filtering joins and set operations过滤链接以及设置操作

artists %>%
anti_join(bands, by = c("first", "last"))使用anti_join():artists中以姓名为维度不含bands的行

aerosmith %>%
union(greatest_hits, by = "song") %>% union可将两项合并在一起

intersect()类似semi-join
setdiff()类似anti-join

all_songs <- live_songs %>% union(greatest_songs)
common_songs <- live_songs %>% intersect(greatest_songs)
all_songs %>% setdiff(common_songs)有关union,intersect,setdiff的区别,此处是用全部的songs减去公用的songs得出只包含在一边的songs。

identical(definitive, complete)检验这俩是否包含一个同样的song(在一个order中)
setequal(definitive, complete)检验这俩是否包含一个同样的song(任意order)
definitive %>%
setdiff(complete)找出在definitive但不在complete的songs

  • Assembling data聚集数据

dplyr包中的bind_rows()bind_cols()和R本身的rbind()cbind()的区别:
前者更快;前者可以以list的方式输入;前者输出的格式总是tbl。当列的名称和data frame中不匹配时,rbind()会报错
而bind_rows()会为匹配不到的名称新建一列,而且缺失值也会?
bind_rows(.id = "album")id表示以album为主键?

比较下data.frame()和data_frame()的区别
as_data_frame(hank)转化为data_frame
当dplyr包bind一个factor和一个character时,会将factor转化为character
factor要转化为numeric之前要先转化成character

  • Advanced joining

rownames_to_column()
rownames_to_column(df, new_col)其中df是一个包含有行名称的dataframe,该函数将df中的行名称作为一列,以new_col作为名称新建一列加入其中。
rename(data, new_name = old_name)在data中,将某一列的旧名称更改成新名称.当要更改两次且都是要把为name的名称改为别的时,可以使用name.x,name.y加以区分之。
left_join(elvis_songs, by = c("name" = "movie"))当要选取两个表中名称不同的列为新表主键时,可以这样用。

library(purrr)
redue()可以把许多table表连接起来。
reduce(left_join, by = c("first", "last"))
distinct()消除重复项
count()计数

Intro to SQL for Data Science简介SQL

SELECT COUNT(birthdate)
FROM people;计数

where中,等号=,不等号<>

SELECT title
FROM films
WHERE (release_year = 1994 OR release_year = 1995)
AND (certification = 'PG' OR certification = 'R');连用OR与AND时

BETWEEN is inclusive,即首末都是包含在内的

SELECT (4 / 3);这样没有指定的话会默认为整数,所以所得的结果是1
SELECT (4.0 / 3.0) AS result;这样设定之后结果才会使1.333

SELECT MAX(budget) AS max_budget,更改查询后列的名字
MAX(duration) AS max_duration
FROM films;用同一个功能选择,命名的话会比较清晰易于区分之。

ORDER BY name DESC倒序
ORDER BY birthdate, name先按birthdate排序,然后按name排序

ORDER BY分组

SQL中,分类时不可以使用where了 这时就可以用HAVING 代替之

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容