zoukankan      html  css  js  c++  java
  • R简易入门(一)

    本文内容来源:https://www.dataquest.io/mission/126/introduction-to-r

    本文数据来源:https://www.whitehouse.gov/21stcenturygov/tools/salaries

    本文摘要:简单介绍了一下R语言的入门语法

     

    赋值

    大部分的语言对变量赋值都是使用等号(=),R语言也支持用等号赋值,但是,最传统且默认的赋值方法是用( <- )符号

    a <- 100  # 给a变量赋值100
    
    print(a)   # 使用print函数来输出,输出结果为[1] 100
    
    print( class(a))  # 使用class函数可以查看变量的数据类型,在R中比较常用的数据类型有character(用来保存文本),numeric(保存数字),输出结果为[1] numeric

     

    向量

    使用c函数来创建一个向量,注意:R中的向量是从1开始计数的

    russianPresidents <- c("Mikhail Gorbachev", "Boris Yeltsin", "Vladimir Putin")
    
    print(russianPresidents[1]) # 输出[1] "Mikhail Gorbachev"
    
    print( length(russianPresidents)) # length函数用来输出变量的长度,这里输出[1] 3
    
    applePrices <- c(113, 114, 115)
    
    print(applePrices[1])  # 输出[1] 113

     

    其实,在最开始的赋值语句 a <- 100中,R实际上也是创建了一个向量,相当于a <- c(100)

    a <- 100
    
    b <- c(100)
    
    print(identical(b, a)) # identical函数用来检查两个变量的类型是否一致,这里输出[1] TRUE

     

    对一个向量直接进行数学运算如加减乘除,实际上是对变量中的每一个元素都进行运算

    stockPrices <- c(10, 9, 11, 15)
    
    print(stockPrices + 2) # 输出[1] 12 11 13 17  实际上返回的是一个新的向量
    
    print(stockPrices) # 输出[1] 10, 9, 11, 15 并没有覆盖掉原来的变量,所以原来变量保存的值不变
    
    一个变量只能存储一种数据类型,所以,如果把多种数据类型存放在一个变量中,会发生数据转换
    
    mixedVector <- c("Fifteen", 15, 0)
    
    print(mixedVector) # 输出[1] "Fifteen"  "15" "0" ,两个数字都被转换为了字符串格式

     

    矩阵

    向量是一维的数据,而矩阵则是多维数据,使用matrix函数来创建矩阵

    B <- matrix(c(1,2,3,4,5,6), 3, 2) # 将一个向量转换成一个3×2的矩阵,一定要注意的是向量的长度要等于维度的积
    
    print(B)
    
    #输出:
    
         [,1]   [,2]
    
    [1,]    1    4
    
    [2,]    2    5
    
    [3,]    3    6

     

    对矩阵的元素进行索引

    print(B[2,1]) # 输出第二行第一列的数据:[1]  2
    
    print(B[,1])  #输出第一列的数据,[1] 1 2 3
    
    print(B[1,])  #输出第一行的数据,[1] 1 4

     

    函数

    定义一个加法函数

    add <- function(a, b){
    
        d <- a + b
    
        return(d)
    
    }
    print( add(1, 2)) # 调用了上面定义的add函数

    上面定义了一个名为add的变量,该变量赋值了一个执行加法的函数,function是定义函数的关键词,a和b则是要传入的参数

     

    读取数据

    原始数据展示(这是一份白宫人员的薪酬表,每一行代表了一个人的薪酬和其他信息)

    Name,Status,Salary,Pay Basis,Position Title
    
    "Abdullah, Hasan A.",Detailee,105960,Per Annum,POLICY ADVISOR
    
    "Abraham, Sabey M.",Employee,55000,Per Annum,ENERGY AND ENVIRONMENT DIRECTOR FOR PRESIDENTIAL PERSONNEL

     

    在R中,使用函数read.csv来读取一个csv文件

    whiteHouse <- read.csv('2015_white_house.csv')

    whiteHouse此时的数据类型是data frame,与矩阵不同之处在于矩阵只能存储一种数据类型的元素,而data frame可以存储不同数据类型的元素,并且data frame会自动把第一行的数据作为列名,所以可以使用列名来引用某一列

    #要得到第一行第三列的数据
    
    whiteHouse[1, 3]
    
    #等价于
    
    whiteHouse[1, ‘Salary’]
    
    #而whiteHouse[‘Salary’]则代表了列名为Salary的那一列数据

    需要注意的是虽然whiteHouse[‘Salary’]和whiteHouse[, ‘Salary’]返回的结果一样,但是他们之间是存在不同的,whiteHouse[‘Salary’]返回一个data frame对象,该对象只有一列数据。whiteHouse[ , ‘Salary’]返回的是一个向量

     

    简单运算

    要计算每个平均薪水

    average = sum(whiteHouse[‘Salary’]) / nrow(whiteHouse[‘Salary’])
    
    # sum函数计算一个向量或者矩阵的总和,nrow函数返回矩阵或者data frame的行数

     

    查找最高、最低薪水

    highestSalary = max(whiteHouse['Salary'])
    
    lowestSalary = min(whiteHouse['Salary'])
  • 相关阅读:
    进程间通讯----消息队列和共享内存方式的实现
    初探 Yii2 的测试模式 index-test.php
    nginx缓存功能的设置
    php五大运行模式CGI,FAST-CGI,CLI,ISAPI,APACHE模式
    workerman如何写mysql连接池
    Varnish 一般是放在 Nginx 前面还是后面的?
    关于PATH_INFO
    Java8 Lambda表达式
    synchronized的一些记录
    类和实例
  • 原文地址:https://www.cnblogs.com/kylinlin/p/5276984.html
Copyright © 2011-2022 走看看