• R语言数据处理


    写在前面:数据处理是数据分析与挖掘必不可少的步骤。下面列出一些常用的数据处理操作。

    一、类型转换

    用class()查看数据的类型,用as.类型名()进行类型转换。

    > num <- as.numeric(c(1,2,3,4,5,6))
    > num
    [1] 1 2 3 4 5 6
    > class(num)
    [1] "numeric"
    > char <- as.character(num)
    > char
    [1] "1" "2" "3" "4" "5" "6"
    > data_frame <- as.data.frame(num)
    > data_frame
    num
    1 1
    2 2
    3 3
    4 4
    5 5
    6 6

    二、缺失值处理

    R语言中缺失值以NA表示,并且通过函数is.na()来检验数据是否存在空值。

    > x <- c(1,2,3,4,NA)
    > is.na(x) #返回一个逻辑向量值
    [1] FALSE FALSE FALSE FALSE TRUE
    > sum(x) #当向量中存在空值,统计结果也是空值
    [1] NA
    > sum(x,na.rm=TRUE) #很多函数都带有na.rm=TRUE的参数,此参数在运算时移除缺失值
    [1] 10
    > x[which(is.na(x))] <- 0 #which函数返回符合条件的相应位置
    > x
    [1] 1 2 3 4 0
    > x <- c(1,2,3,4,NA)
    > y <- c(5,6,NA,8,9)
    > z <- data.frame(x,y)
    > is.na(z)
    x y
    [1,] FALSE FALSE
    [2,] FALSE FALSE
    [3,] FALSE TRUE
    [4,] FALSE FALSE
    [5,] TRUE FALSE
    > na.omit(z) #na.omit()函数可以直接删除缺失值所在的行
    x y
    1 1 5
    2 2 6
    4 4 8

    三、排序

    sort()用于向量的排序,order()用于多维的排序。

    > sort(c(2,4,5,7,9,56),decreasing=TRUE) #默认是升序的排序
    [1] 56 9 7 5 4 2
    > data <- data.frame(ID=c('A','B','R','A','D'),Score=c(2,5,3,2,7))
    > data[order(data$ID),] #按照ID列升序
    ID Score
    1 A 2
    4 A 2
    2 B 5
    5 D 7
    3 R 3
    > data[order(data$ID,data$Score,decreasing=T),]
    ID Score
    3 R 3
    5 D 7
    2 B 5
    1 A 2
    4 A 2

    四、去重(unique()函数用于去重)

    > account <- c('账号A','账号B','账号B','账号C','账号A')
    > dbname <- c('server1','server2','serever1','server1','server1')
    > z <-data.frame(account,dbname)
    > z
    account dbname
    1 账号A server1
    2 账号B server2
    3 账号B serever1
    4 账号C server1
    5 账号A server1

    > unique(z$account) #按account指标去重,account变量为factor类型,因此带有level统计指标
    [1] 账号A 账号B 账号C
    Levels: 账号A 账号B 账号C

    > unique(z[,1:2]) #度维度组合去重
    account dbname
    1 账号A server1
    2 账号B server2
    3 账号B serever1
    4 账号C server1

    五、数据匹配

    数据匹配是一个很常用的操作,类似sql中的join操作。merge()可用于匹配两个数据框并进行数据合并,参数by=‘统一字段名’来进行匹配。

    > name1 <- c('Jet','Tina','Melisa','Zu','Elliot')
    > name2 <- c('Jet','Tina','Melisa','Stone','Dich')
    > level <- c(21,31,34,15,53)
    > pay <- c(1300,767,2929,190,778)
    > data1 <- data.frame(name1,level)
    > data2 <- data.frame(name2,pay)
    > merge(data1,data2,by.x='name1',by.y='name2') #合并指定列相同的行
    name1 level pay
    1 Jet 21 1300
    2 Melisa 34 2929
    3 Tina 31 767

  • 相关阅读:
    [Windows Azure] Windows Azure Web Sites, Cloud Services, and VMs: When to use which?
    [Windows Azure] Windows Azure Execution Models
    [Windows Azure] Load Testing in Windows Azure
    [Windows Azure]The Autoscaling Application Block
    [Windows Azure]Windows Azure Identity
    [Windows Azure] Data Management and Business Analytics
    alienware Win8 系统安装
    Navisworks Addin 插件集成
    Navisworks 2014 Api 简单的使用
    Winform简单调用WebApi
  • 原文地址:https://www.cnblogs.com/moady/p/5640403.html
Copyright © 2020-2023  润新知