楼主: xiaoxiaofei_123
1494 0

[数据挖掘工具] dplyr包小结 [推广有奖]

  • 0关注
  • 0粉丝

已卖:2份资源

大专生

56%

还不是VIP/贵宾

-

威望
0
论坛币
51 个
通用积分
4.4196
学术水平
31 点
热心指数
40 点
信用等级
21 点
经验
1119 点
帖子
15
精华
0
在线时间
68 小时
注册时间
2017-10-11
最后登录
2020-4-30

楼主
xiaoxiaofei_123 发表于 2018-4-25 08:59:20 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
#加载包,用到nycflights13包里的数据
library(dplyr)
library(nycflights13)
##数据预览-----
head(flights)
tbl_df(flights)

##数据筛选--------
flights[flights$month==1&flights$day==1,]
filter(flights,month==1,day==1)
slice(flights,1L) ##第一行数据

##数据重排序-----
arrange(flights,desc(arr_delay)) #按照延误时间降序排序

#数据选择--------
#starts_with()、ends_with()、
#num_range('x',1:5,width=2)#选择从x01到x05的数值型变量
#one_of('x','y')选择x y 变量,即声明变量
#everything()#所有变量

select(flights,year:month)
#选取变量名中包含etal的列  
select(iris, contains("etal"))
#正则表达式匹配,返回变量名中包含t的列  
select(iris, matches(".t."))
#调整列顺序,把Species列放到最前面  
select(iris, Species, everything())
#两列无重复的匹配
distinct(select(flights,origin,dest))

#数据变形-------
flights <- mutate(flights,gain = arr_delay - dep_delay, speed = distance/air_time * 60)#直接生成新变量
transform(flights,##修改或者生成新变量
          gain = arr_delay - dep_delay,
          gain_per_hour = gain / (air_time / 60))
transmute(flights,gain = arr_delay - dep_delay, speed = distance/air_time * 60) ##只保留新生成的列

#数据汇总-----
#我们还可以用sample_n() and sample_frac()函数随机选择计算汇总数据。
summarise(flights,
          delay = mean(dep_delay, na.rm = TRUE))

#数据分组------
by_tailnum <- group_by(flights, tailnum)
delay <- summarise(by_tailnum,
                   count = n(),
                   dist = mean(distance, na.rm = TRUE),
                   delay = mean(arr_delay, na.rm = TRUE))
delay <- filter(delay, count > 20, dist < 2000)

#表关联----
#如果by参数不设置,默认是按照两个表同名字段匹配
df1 <- data.frame(id=c(1:6),m=sample(10,6))
df2 <- data.frame(id=c(3:8),n=sample(6,6))
inner_join(df1,df2,by=c('id'='id'))
full_join(df1,df2) #全连接
semi_join(df1,df2)#返回df中与df2匹配的记录
anti_join(df1,df2)#返回df1中与df2不匹配的记录

#集合操作--------
df <- data.frame(a=sample(10,8,replace = TRUE),b=rep(1,8))
first <- df[1:4, ]  
second <- df[5:8, ]  
intersect(first, second)  #取两个集合的交集  
union(first, second)  #取两个集合的并集,并去重  
setdiff(first, second)  #取两个集合的差集,返回first中存在但second中不存在的记录
union_all(first, second)  #取两个集合的并集, 不去重
setequal(df, df[1:8, ])  #判断两个集合是否相等,返回TRUE

#合并数据框(按行或者列合并)-------------
bind_rows(first,second)
bind_rows(list(first,second),.id='id') #按行合并,并指明来自哪个数据框
bind_cols(first,second)  ##必须相同行

#数据抽样------
sample_frac(flights,1.5,replace = TRUE)#随机有重复的取1.5倍行数据
sample_n(flights, 10)#随机无重复的取10行数据

#管道操作-----

iris %>%
  group_by(Species) %>%
  summarise(total = sum(Sepal.Length)) %>%
  arrange(desc(total)) %>%
  View()

#连接数据库Mysql
#dplyr连接mysql数据库
library(dplyr)
my_db <- src_mysql(dbname = "rmysql",
                   host = localhost,
                   port = 3306,
                   user = "rmysql",
                   password = "rmysql")
my_tbl <- tbl(my_db,from = "my_table") #my_table为数据库中的表

#其他小技巧---------
n(x) #x中行的数量
n_distinct(x): #x中不重复行的数量
first(x)  last(x) #x中第一行与最后一行




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:dplyr Everything Distinct flights Library

已有 1 人评分经验 论坛币 学术水平 热心指数 收起 理由
阿扁V5 + 100 + 10 + 1 + 1 精彩帖子

总评分: 经验 + 100  论坛币 + 10  学术水平 + 1  热心指数 + 1   查看全部评分

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-6 11:33