R014 变量处理常用函数

1.变量转换
  • is.datatype():判断变量种类
  • as.datatype():转换变量类型
    其中,datatype可以为numeric,character,vector,matrix,data.frame,factor,logical等
    可以通过methods(is),methods(as)查看R中的全部is/as函数列表
  • factor():将一个向量转化为一个因子
2.变量的重命名
  • edit(),fix()调用交互式编辑器,单击变量名进行修改
  • names()函数
    names(object),则表示获取object的名字
    names(object) <- Value,则表示将变量名修改为Value
  • renames(),首次使用需要安装plyr包
    renames(dataframe,c(oldname="newname",oldname="newname",……))
4.变量的缺失值
  • is.na() 用于判断对象的元素中是否有缺失值,如返回值为TRUE,则无缺失,返回FALSE,则有缺失值
  • 重编码条件元素为NA,如下图R代码及输出值,其中na.rm=TRUE表示在计算之前移除NA,na.omit()函数表示移除所有含NA值的观测
> x <- seq(1,30,2)
> x
 [1]  1  3  5  7  9 11 13 15 17 19 21 23 25 27 29
> x[x>=20] <- NA
> x
 [1]  1  3  5  7  9 11 13 15 17 19 NA NA NA NA NA
> y <- na.omit(x)
> y
 [1]  1  3  5  7  9 11 13 15 17 19
attr(,"na.action")
[1] 11 12 13 14 15
attr(,"class")
[1] "omit"
> sum(y)
 [1] 100
> sum(x,na.rm = T)
[1] 100
4.向量处理

length(x):x中元素的个数
dim(x):查看变量的维数;重新设置的维数,例如dim(x)=c(3,2)
dimnames(x):重新设置对象的名称
nrow(x):行的个数
ncol(x):列的个数
class(x):得到或设置x的类;class(x)<-c(3,2)
unclass(x):删除x的类
attr(x,which):得到或设置x的属性which
attributes(obj):得到或设置obj的属性列表
fix,edit:对数据框数据进行表格形式的编辑

5.数据选取和操作

which.max(x):返回x中最大元素的指标
which.min(x):返回x中最小元素的指标
rev(x):翻转x中所有的元素
sort(x):升序排列x中的元素;降序排列使用:rev(sort(x))
cut(x,breaks):将x分割成为几段(或因子);breaks为段数或分割点向量
match(x,y):返回一个和x长度相同且和y中元素相等的向量不等则返回NA
which(x==a):如果比较操作为真(TRUE),返回向量x的指针
choose(n,k):组合数的计算
na.omit(x):去除缺失值(NA)(去除相关行如果x为矩阵或数据框)
na.fail(x):返回错误信息,如果x包含至少一个NA
unique(x):如果x为向量或数据框,返回唯一值
table(x):返回一个由x不同值个数组成的表格(通常用于整数或因子),即频数表
subset(x,...):根据条件(...选取x中元素,如x$V1<10);如果x为数据框,选项select使用负号给出保留 或去除的变量 subset(x, subset, select, drop = FALSE, ...)
sample(x,size):不放回的随即在向量x中抽取size个元素,选项replace=TRUE允许放回抽取
prop.table(x,margin=):根据margin使用分数表示表格,wumargin时,所有元素和为

6.R数据的创建与索引
6.1. 向量的操作

c(...),为concatenate的缩写,向量的创建
from:to :产生一个序列,":"有较高的优先级;1:4+1得到"2,3,4,5"
seq() 产生一个向量序列,seq(from = 1, to = 1, by = ((to - from)/(length.out - 1)),length.out = NULL, along.with = NULL, ...)
rep() 重复一个对象,rep(x,times),x是要重复的对象(例如向量c(1,2,3)),times为对象中每个元素重复的次数,如times=c(9,7,3)就是将x向量的1重复9次,2重复7次,3重复3次。

6.2. 数组(包含矩阵、向量)创建

matrix(...):创立矩阵
array(x,dim=...):产生由x组成的数组
data.frame(...):创建数据框,变量可能被命名或未被命名
list(...):创建一个由变量组成的列表,变量可能被命名;
factor(x,levels=) 把向量x编码称为因子
rbind(...)以行的形式组合矩阵,数据框,或其它
cbind(...)以列的方式组合,其他同rbind()

6.3. 数据切割和分离
  • 向量指标
    x[n]:第n个元素
    x[-n]:除了第n个元素的x
    x[1:n]:前n个元素
    x[-(1:n)]:第n+1至最后的元素
    x[c(1,4,2)]:指定元素
    x["name"]:名为"name"的元素
    x[x>3]:所有大于3的元素
    x[x>3 & x<5]:区间(3,5)的元素
    x[x%in%c("a","and","the")]:给定组中的元素
  • 列表指标
    x[n]:列表显示元素n
    x[n]:列表的第n个元素
    x["name"]:名为"name"的元素
    x$name :同上
  • 矩阵指标
    x[i,j]:下表为(i,j)的元素
    x[i,]:第i行
    x[,j]:第j列
    x[,c(1,3)]:第1和3列
    x["name",]:名为"name"的行
    x$name :同上
  • 数据框指标
    x["name"]:列明为"name"的列
    x$name :同上
6.4. R数学函数
  • 泛用函数apply:
    用法:apply(X, MARGIN, FUN, ...),X为一数组array,当然包括矩阵, MARGIN为一向量,它指定函数要作用的下标。例如对一个矩阵来说,1代表行,2代表列,而c(1,2)代表行和列。FUN作用于数组array上的函数。此函数可以是自己编写的。当X时一个data.frame时,而不是array时,函数apply就会强制性的通过as.matrix或as.array将其转化为maxtrix或array。
    例子## Compute row and column sums for a matrix:
    x <- cbind(x1 = 3, x2 = c(4:1, 2:5))
    col.sums <- apply(x, 2, sum)
    row.sums <- apply(x, 1, sum)
  • 基本符号:
    加(+),减(-) ,乘 (*) ,除(/),幂(^)
  • 三角函数与其他基本数学函数
    sin, cos, tan,asin, atan,atan2,log,log10,exp,
  • 其他
    max(x):当x为一向量时,返回x中最大的元素。当x为矩阵时,返回矩阵中所有元素的最大值。当要返回矩阵x每行或每列的最大值时,可以使用apply函数(apply(X, MARGIN, FUN, ...)),其中MARGIN表示要作用的方式,1代表行,2代表列,c(1,2)代表行和列;例如apply(data,MARGIN=1,max)
    min(x):返回x中最小的元素,同max
    rev(x):翻转x中的所有元素
    sort(x):升序排列x中的元素;降序排列使用rev(sort(x)),要得到排列的小标用order()
    choose(n,k):组合数计算
    which():返回满足条件的下表
    sample(x,size):不放回的随机在向量x中抽取size个元素选项,replace+TRUE允许放回抽样
    rank():计算向量的秩
    range(x):返回c(min(x),max(x))
    sum(x):x中各元素的加和
    diff(x):向量x的差分
    prod(x):x中元素的连乘积
    mean(x):x的均值
    median(x):x的中位数
    quantile(x,probs=):满足给定概率的样本分位数(默认为0,0.25,0.75,1)
    weight.mean(x,w):加权平均,w即为weight,即权值。
    var(x):向量x的样本方差;如果x是矩阵或数据框,协方差矩阵将被计算
    cor(x):如果x是矩阵或数据框,相关系数矩阵将被计算
    sd(x):x的标准差;sd(x)=sqrt(var(x))
    var(x,y) or cov(x,y):x和y间的协方差;如果x,y为矩阵或数据框,返回x和y各列的协方差
    cor(x,y):x和y的线性相关系数;或者相关矩阵,如果x和y为矩阵或者数据框
    round(x,n):x的约数,精确到n位
    log(x,base):计算x以base为基的对数,默认基为exp(1)
    scale(x):如果x是一个矩阵,则中心化和标准化数据;若只标准化数据,则使用选项center=FALSE,若只 中心化使用scale=FALSE(默认center=TRUE, scale=TRUE)
    pmin(x,y,...):x,y相比较小者,组成新的向量
    pmax(x,y,...):x,y相比较大者,组成新的向量
    Re(x):复数的实部
    Im(x):复数的虚部
    abs(x):绝对值
    Arg(x):复数角度(in radians)
    Conj(x):共轭复数
    fft(x):数组x的快速傅里叶变换
    mvfft(x):矩阵x的每一列的傅里叶变换
    factorial():计算n!
    cumsum():cumulative sums
    cumprod():cumulative products
    D(expression(exp(x^2)),"x") :求导
    integrate(function(x) x^2,0,1):积分
    na.rm=FALSE:指定是否移除缺失值(NA)
6.5.R字符操作

str_c(..., sep = "", collapse = NULL):转化为字符后连接向量;seq=为分割界限(一个空格为默认);选择collapse=可以分 割"collapse"结果
str_sub(string, start = 1L, end = -1L) :提取字符向量的子字段;
str_to_lower(x):转化为lowercase
str_to_upper(x):转化为uppercase
x%in%table:table中匹配x元素位置组成的向量,返回值为逻辑值
str_match(string, pattern):pattern匹配字符,并返回对应的字符string
str_extract: 从字符串中提取匹配字符
str_extract(shopping_list, "\d") # 提取数字 #提取匹配模式的第一个字符串
str_extract(shopping_list, "[a-z]+") #提取字母
str_detect(string, pattern) :检测函数,用于检测字符串中是否存在某种匹配模式
str_detect(val, "^a"):检查字符串向量,是否以a为开头
nchar(x):字符的个数

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342