zoukankan      html  css  js  c++  java
  • R 语言学习笔记(4)—— 数值&字符处理

    数值和字符处理函数

    1. 数学函数

    函数 功能
    abs(x) 绝对值
    sqrt(x) 平方根
    ceiling(x) 返回不小于 x 的最大整数
    floor(x) 返回不大于 x 的最大整数
    trunc(x) 向 0 的方向截取整数,左截取
    round(x, digits = n) 将 x 舍为指定位数的小数
    signif(x, digits = n) 将 x 舍入为指定的有效数字位数
    log(x, base = n) (log (x))

    需要注意,如果是对一组向量或者是一个数据框作用时,函数会作用于他们中的每一个值

    2. 统计函数

    函数 功能
    mean(x) 平均数
    median(x) 中位数
    sd(x) 标准差
    var(x) 方差
    quantile(x, probs) 求分位数,probs 为一个由[0,1]之间的概率值组成
    range(x) 求值域
    sale(x) 按列进行中心化(center = TRUE), 或标准化(center = TRUE, scale = TRUE)

    3. 概率函数

    概率函数通常用来生成特征已知(有一定统计学特征的)的模拟数据,以及在用户编写的统计函数中计算概率值

    形如:[dpqr]distribution_abbreviation()

    distribution_abbreviation 概率分布的缩写
    常见的概率分布缩写有:正态分布(norm)、t 分布(t)、F 分布(f)、 二项分布(binom)、均匀分布(unif)
    eg: pnorm(1.96)返回的是位于 z=1.96 左侧的标准正态曲线下面积是多少
    qnorm(.9, mean = 500, sd = 100)返回的是均值为 500、标准差为 100的正态分布 0.9分位点值是多少
    rnorm(50, mean = 50, sd = 10)生成 50 个均值为 50,标准差为 10的正态随机数

    第一个字母为分布的缩写:

    d = 密度函数(density)

    p = 分布函数(distribution function)

    q = 分位数函数(quantile function)

    r = 生成随机数(随机偏差)

    1.设定随机数种子

    在每次利用 rdistribution_abbreviation() 来生成随机数的时候,函数都会使用一个不同的种子,因此也会产生不同的结果;也就是说,如果使用的种子是相同的话,出现的结果也是相同的,这样我们就能复现结果。可以通过函数 set.seed()显式(提前)指定这个种子,以后再利用这个种子可以让结果重现(reproducible)

    2. 生成多元正态数据

    首先得知道什么是多元正态函数。举个例子,一个维度的正态分布在 x-y 轴上表示,是我们常见的分布图形,如果是两个维度即可在 x-y-z 轴上表示,可以想象一下,就像一个沙堆,它在 x-z 的截面恰好是一维的图形轮廓。
    我们利用 MASS 包中mvrnorm(n, mean, sigma) 函数来生成多元正态分布中 n 个观测值
    mean为均值向量,而sigma为方差-协方差矩阵(或相关矩阵)

    | 均值向量 | 230.7 | 146.7 | 3.6 |
    | 协方差阵 | 15360.8 | 6721.2 | -47.1 |
    | | 6721.2 | 4700.9 | -16.5 |
    | | -47.1 | -16.5 | 0.3 |

    具体参考https://www.cnblogs.com/terencezhou/p/6235974.html

    4. 字符处理函数

    举几个比较实用的函数

    nchar(x) 
    #用来计算 x 中字符数量的函数,区分 length(x),其输出的为 x 中元素的个数
    
    substr(x, start, stop) 
    #用来提取(返回值)或替换(赋值)一个字符向量中的子串
    
    grep(pattern, x, ignore.case = FALSE, fixed = FALSE)
    #x中搜索某种模式,fixed = FALSE 则 pattern 为一个正则表达式,反之则为文本字符串,返回值为匹配的下标
    
    sub(pattern, replacement, x, ignore.case = FALSE, fixed = FALSE)
    #大致与 grep 一样,但是是搜索出来并将之用 replacement 替换掉
    #注意一点,sub("\s", ".", "Hello There") 返回值为 Hello.There, 其中***"s"是一个用来查找空白的正则表达式***,而用两个""因为一个""在 R 中为转义符
    
    strsplit(x, split, fixed = FALSE)
    #split 处分割字符向量 x 中的元素。
    # y <- strsplit("abc", " ")将返回含有一个成分、三个元素的列表,包含的内容为"a","b","c",
    #unlist(y)[2]和 sapply(y, "[", 2)均会返回"b"
    
    paste(..., sep=" ")
    #连接字符串,分隔符为 sep
    
    touuper()
    tolower()
    #转换大小写
    

    正则表达式可以在,grep() sub() strsplit()中进行搜索
    具体语法参考https://www.runoob.com/regexp/regexp-intro.html

    5. 其他实用函数

    length(x)
    #返回对象 x 的长度
    
    seq(from, to, by)
    #生成一个序列
    #indices <- seq(1, 10, 2)
    #indices 的值为 c(1,3,5,7,9)
    
    rep(x, n)
    #将 x 重复 n 次
    
    cut(x, n)
    #将连续型变量 x 分割为有着 n 个水平的因子
    
    pretty(x, n)
    #创建美观的分割点,通过选取 n+1个等间距的取整值,将一个连续型变量分割为 n 个区间,绘图中常用
    
    cat(..., file = "myfile", append = FALSE)
    #连接...的内容,并将其输出到屏幕上或文件中
    
  • 相关阅读:
    HDU5772 (最小割)
    HDU 4971 (最小割)
    暑期集训个人赛1
    HDU 5644 (费用流)
    HDU5619 (费用流)
    暑假集训热身赛
    构建之法阅读笔记05
    找小水王
    找水王
    Runner站立会议之个人会议(冲刺二)
  • 原文地址:https://www.cnblogs.com/LCYScS/p/12360699.html
Copyright © 2011-2022 走看看