data frame. reset_index什么意思_R代码|data.table包使用示例

前言

我创建【R代码】专栏,用于分享R语言解决数据,特征和模型三方面问题的代码。这些代码片段,具有实用性和迁移性。大家可以根据实际问题做修改,变通和延展。我只是R语言代码的搬运工和传播者,大家在使用这些R代码的时候,有些什么新的启示或者问题,请留言。依托【R语言】公众号,我创建了R语言群,群友们每天都会就R语言的主题进行交流和分享。需要加入R语言群的朋友,可以扫码加我的个人微信,请备注【姓名-入群】。我诚邀你加入群,大家相互学习和共同进步。

73c6d37bfbfe239b682d64331d798132.png


代码

在上一篇文章《R代码|dplyr包使用示例》留言里,一位朋友提到了data.table包。这篇文章分享一些data.table包的使用例子,涉及到数据的导入和数据的加工(增删改查和统计操作)

#################################
#时间:2020-07-29
################################
options(warn = -1)

# 加载data.table包
library(data.table)

# 数据导入
mt "https://raw.githubusercontent.com/selva86/datasets/master/mtcars.csv")
head(mt)
class(mt)

# 数据读取性能对比分析
# Create a large .csv file
set.seed(100)
m write.csv(m, 'm2.csv', row.names = F)
# Time taken by read.csv to import
system.time({m_df 'm2.csv')})
# Time taken by fread to import
system.time({m_dt 'm2.csv')})

# data.frame转换为data.table
data("mtcars")
head(mtcars)
mtcars$carname mtcars_dt class(mtcars_dt)
mtcars_copy setDT(mtcars_copy)
class(mtcars_copy)

# data.frame转换为data.table
setDF(mtcars_copy)
class(mtcars_copy)


# 数据选择操作
# dataframe syntax
mtcars[mtcars$cyl == 6 & mtcars$gear == 4, ]
# datatable syntax
mtcars_dt[cyl==6 & gear==4, ]
mtcars[, 1]
mtcars_dt[, 1]
mtcars_dt[, 1, with=F]
mtcars_dt[, mpg]

myvar "mpg"
mtcars_dt[, myvar, with=F]
columns 'mpg', 'cyl', 'disp')
mtcars_dt[, columns]

mtcars_dt[, columns, with=FALSE]

# syntax 1:
mtcars_dt[1:4, list(mpg, cyl, gear)]

# syntax 2: most used
mtcars_dt[, .(mpg, cyl, gear)]

# 删除列
drop_cols "mpg", "cyl", "gear")
mtcars_dt[, !drop_cols, with=FALSE]

# 列名重新命名
setnames(mtcars_dt, 'vs', 'engine_type')
colnames(mtcars_dt)

DT DT[ , X := shift(A, 1, type="lag")]
DT[ , Y := shift(A, 1, type="lead")]

# Solution 1
aq_dt aq_dt[!is.na(Ozone), .(Solar.R, Wind, Temp)]

# Solution 2
setDT(airquality)
airquality[!is.na(Ozone), .(Solar.R, Wind, Temp)]

# 增加新的列
# data.frame syntax (works on data.table)
mtcars_dt$cyl_gear $cyl + mtcars_dt$gear

# data.table syntax
mtcars_dt[, cyl_gear2 := cyl + gear]

mtcars_dt[,  `:=`(cyl_gear3 = cyl * gear,
                  cyl_gear4 = cyl - gear)]
mtcars_dt

mtcars_dt[,  .(cyl_gear3 = cyl * gear,
               cyl_gear4 = cyl - gear)]

# 分组操作
mtcars_dt[, .(mean_mileage=mean(mpg)), by=.(cyl, gear)]
mtcars_dt[, .N, by=cyl]

dt1                      mean_disp=mean(disp),
                     mean_wt=mean(wt),
                     mean_qsec=mean(qsec)), by=cyl]
output output

output                         mean_disp=mean(disp),
                        mean_wt=mean(wt),
                        mean_qsec=mean(qsec)), by=cyl][order(cyl), ]

# data.table中使用函数
output "mpg", "disp", "hp", "drat", "wt", "qsec")]
output

# 数据连接
dt1 dt2 dt3 # Inner Join
merge(dt1, dt2, by='carname')
#> 

# Left Join
merge(dt1, dt2, by='carname', all.x = T)
#> 

# Outer Join
merge(dt1, dt2, by='carname', all = T)  
#> 

# 参考资料
# https://www.machinelearningplus.com/data-manipulation/datatable-in-r-complete-guide/

温馨提示:

第一步:运行一遍代码,理解data.table包函数的使用,不明白的地方,查看函数的帮助文档。

第二步:迁移到自己的数据集,进行应用。

代码的使用,有什么问题,请留言。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值