R for Data Science
想了一下还是做一个笔记目录,这样能够方便查询
R for Data Science(笔记) ---数据变换(filter使用)
R for Data Science(笔记) ---数据变换(select基础使用)
R for Data Science(笔记) ---数据变换(select组合其他函数)
R for Data Science(笔记) ---数据变换(创建新的变量)
R for Data Science(笔记) ---数据变换(行排序)
R for Data Science(笔记) ---数据变换(归纳总结)
R for Data Science(笔记) ---数据整理(Pivot相关函数)
R for Data Science(笔记) ---数据整理(分列和合并)
tidy流处理数据的大量运用,我想这与管道符%>% 的使用,数据处理动词化,有着很重要的关系。
用最少的时间,解决最重要的、最常见的问题,我把这称为是高效;剩余的难点,我把其称为提高。
这次学习的是数据框的合并问题,也就是用到函数join相关函数
这个函数能做什么?
类似与基础函数的merge函数,几个数据框存储着不同类型的数据,但是有相同的数据项,通过相同的数据项,就可以将几个数据框数据进行合并。
具体示例
例如 x,y两项数据,左侧的列名是合并标的,1,2是两者都有,3,4是各自特有,
对于这两个数据合并,有这样一些合并类型
inner join函数合并
可以看到,这个函数就是只选择两个数据集中关键值相同的进行合并。
操作代码
x %>%
inner_join(y, by = "key")
Outer joins
此外,还有几项合并方式
语法还是很简明的,哪一侧就指代以某一侧未准进行合并。
代码实现也很简洁方便
x %>%
left_join(y, by = "key")
x %>%
right_join(y, by = "key")
x %>%
full_join(y, by = "key")
当然还会出现,某一数据集中有重复的关键值。在实际操作中,我没有遇到这样的实际需求,使用频率好像不高。但是依然把书中解析放在这里。
可以看出,重复的会依次与另一个数据集进行组合,这就是排列组合的问题了
列名不一样,怎么操作?
很多时候,可能两个数据集中,要合并的标的内容一致,但是列名不一致。这个时候的操作如下:
在操作的函数中的参数进行指定,by = c("a" = "b"), 其中a和b分别是两个数据集中的列名。
刚开始接触R时,操作不熟悉,使用重命名的方法,使得两个数据集中需要合并的数据列名保持一致,然后再合并。
自带筛选性质的合并
上面的都是强制合并,也就是,如果没有,那么就形成空值,缺失值。还有两个函数自带筛选性质。semi_join(x, y), anti_join(x, y)。
semi_join(x, y) 保留 x 中与 y 中匹配的所有观察值
anti_join(x, y) 删除 x 中与 y 中匹配的所有观察
semi_join(x, y)图示
anti_join(x, y) 图示
与merge函数的比较
dplyr | merge |
---|---|
inner_join(x, y) | merge(x, y) |
left_join(x, y) | merge(x, y, all.x = TRUE) |
right_join(x, y) | merge(x, y, all.y = TRUE) |
full_join(x, y) | merge(x, y, all.x = TRUE, all.y = TRUE) |
当然,我自己使用过程中还使用过,先进行行列筛选,顺序排列,使用cbind()函数合并两个数据集,达到目的就好。
网友评论