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")

  • 相关阅读:
    (原)Lazarus 异构平台下多层架构思路、DataSet转换核心代码
    (学)新版动态表单研发,阶段成果3
    (学) 如何将 Oracle 序列 重置 清零 How to reset an Oracle sequence
    (学)XtraReport WebService Print 报错
    (原)三星 i6410 刷机 短信 无法 保存 解决 办法
    (原) Devexpress 汉化包 制作工具、测试程序
    linux下网络配置
    apache自带ab.exe小工具使用小结
    Yii::app()用法小结
    PDO使用小结
  • 原文地址:https://www.cnblogs.com/MarsMercury/p/4967115.html
Copyright © 2011-2022 走看看