zoukankan      html  css  js  c++  java
  • R语言实战读书笔记(四)基本数据管理

    4.2 创建新变量

    几个运算符:

    ^或**:求幂

    x%%y:求余

    x%/%y:整数除

    4.3 变量的重编码

    with():

    within():可以修改数据框

    4.4 变量重命名

    包reshape中有个函数rename,可以改名 rename(df,c(manage='managerID',date='testDate'))

    names(df)[2]<-'newname'

    4.5 缺失值

    is.na():检查缺失值,是返回TRUE,否返回FALSE

    na.rm=TRUE选项可以用,比如

    y<-sum(x,na.rm=TRUE)

    移除缺失值

    newdf<-na.omit(df)

    4.6 日期值

    as.Date():其中参数input_format的取值,真难记,默认日期是yyyy-mm-dd

    %d:数字日期

    %a:缩写的星期名

    %A:非缩写的星期名

    %m:00~12

    %b:缩写的月份

    %B:非缩写的月份

    %y:两位年份

    %Y:四位年份

    Sys.Date():当前日期

    date():返回当前日期和时间,为什么不好好起名字呢,非要叫Date和date

    可以用format提取一些东西

    today <- Sys.Date()
    format(today, format = "%B %d %Y")
    format(today, format = "%A")

    日期可以相减

    startdate <- as.Date("2004-02-13")
    enddate <- as.Date("2009-06-22")
    days <- enddate - startdate

    也可以

    today <- Sys.Date()
    format(today, format = "%B %d %Y")
    dob <- as.Date("1956-10-10")
    format(dob, format = "%A")

    4.6.1 将日期转换为字符型变量

    as.character

    4.7 类型转换

    is.numeric  -->  as.numeric

    is.character

    is.vector

    is.data.frame

    is.factor

    is.logical

    4.8 数据排序

    order()

    newdata <- leadership[order(leadership$age), ]  这是升序,前面加个减号就是降序

    newdata <- leadership[order(gender, -age), ]  这是按性别升序,年龄降序排序

    4.9 数据集的合并

    4.9.1 添加列

    横向合并两个数据框,用merge()

    newdf<-merge(dfA,dfB,by="ID")

    newdf<-merge(dfA,dfB,by=c("ID","Country"))

    如果不需要连接,用cbind就可以

    4.9.2 添加行

    rbind

    4.10 数据集取子集

    4.10.1 选入变量

    选列

    data<-df[,c(6:10)]

    或按名称选择

    myvars <- c("q1", "q2", "q3", "q4", "q5")
    newdata <- leadership[myvars]

    4.10.2 剔除变量

    myvars <- names(leadership) %in% c("q3", "q4")  得到交集
    newdata <- leadership[!myvars]  取反,结果等于去除了q3,q4

    或者

    newdata <- leadership[c(-7, -8)]

    4.10.3 选入观测

    which函数

    4.10.4 subset

    newdata <- subset(leadership, age >= 35 | age < 24, select = c(q1, q2, q3, q4))
    newdata <- subset(leadership, gender == "M" & age > 25, select = gender:q4)

    4.10.5 随机抽样

    sample

    sample<-df[sample(1:nrow*(df),3,replace=FALSE] 不放回抽样

    4.11 使用SQL操作数据框

    library(sqldf)
    newdf <- sqldf("select * from mtcars where carb=1 order by mpg", row.names = TRUE)
    newdf <- sqldf("select avg(mpg) as avg_mpg, avg(disp) as avg_disp,gear from mtcars where cyl in (4, 6) group by gear")

  • 相关阅读:
    成功连上数据库顿感世界美好许多
    MySQL数据库基本命令
    杭电1004 Let the Balloon Rise
    大数学习笔记
    安卓传感器开发之指南针
    java Class文件内部结构解析
    mysq数据库实战小型管理系统
    JSplitPane分隔线的用法
    swing 菜单+右键菜单+二级菜单实现
    input type=file 上传文件,同一个文件第二次上传无反应
  • 原文地址:https://www.cnblogs.com/MarsMercury/p/4967115.html
Copyright © 2011-2022 走看看