【R】初步入门:数据类型

11月开始到同济大学适应环境了,提前搬砖啦。导师拟定的毕设题目是异常分析(anomaly detection),异常检测的具体概念参见百度百科:https://baike.baidu.com/item/%E5%BC%82%E5%B8%B8%E6%A3%80%E6%B5%8B/11069992?fr=aladdin

毕设的目标是做一个网页应用,能够实现异常检测,所运用的语言是R语言,R语言在做数据分析的时候经常使用;其语言特性与python相似,不用提前声明变量,不固定变量名与代数据类型的关系,可以说很简便了;代码风格与java等传统语音相似,使用大括号{}的方式形成一段代码。

大概用了三天时间学习了一下R以及RShiny,所用的平台是RStudio,R的版本为3.4.2,顺便做了些笔记,怕忘记,就传上来啦。

一、 六种数据类型

1.     向量

原子向量:逻辑(TRUE, FALSE),数字值(v <- 23.5),整数(v <- 2L),复数(v <- 2+5i),字符(v <- “TRUE”),原生(v <- charToRaw("Hello"),每个字符储存为一个RAW中的元素)

创建向量:apple <- c(‘red’,’’green’,”yellow”)

【其中的单引号双引号不影响赋值,各个元素的类型一致下标从1开始】

2.     矩阵mateix

创建二维矩形数据集:M = matrix( c('a','a','b','c','b','a'),nrow = 2, ncol = 3, byrow = TRUE, dimnames = list(rnames, cnames))

【每个元素数据类型相同,取行列值与具体值:X[ i , ]或X[ , j],X[i,j]】

3.     数组array

a <- array(c('green','yellow'),dim = c(3,3,2),dimname=list(……))

【多维的矩阵,array函数(data,dim,dimnames)】

4.     数据框,数据帧frame

BMI <- data.frame( gender =c("Male", "Male","Female"), height = c(152,171.5, 165), weight = c(81,93, 78), Age = c(42,38,26))

【储存一种类似EXCEL列表形式的数据,仅每列的数据属性相同,列之间可不相同,函数原型为简单列的罗列】

搜索:type1<-patientdata[patientdata$diabetes==”Type1”]【使用$取列名】

新增:patientdata<-rbind(patientdata , newdataframe)

5.     因子factor

变量可归结为名义型有序型连续型变量

名义型变量是没有顺序之分的类别变量。糖尿病类型Diabetes(Type1、Type2)是名义型变量的一例。变量之间并没有先后顺序,只是表示不同类型。

有序型变量表示一种顺序关系。如上例中病情Status(poor、 improved、 excellent)是顺序型变量。病情为poor(较差)病人的状态不如improved(病情好转)的病人,但并不知道相差多少。

连续型变量可以呈现为某个范围内的任意值,并同时表示了顺序和数量。年龄Age就是一个连续型变量。 

类别(名义型)变量和有序类别(有序型)变量在R中称为因子(factor)。类似于编程语言中的枚举类型。

factor(c(“type1”, “type2”, “type1”, “type1”))

【将名义或者有序型变量映射成整数并存储(从1开始),如果没有定义level,则其内部关联的整数由标签出现的顺序来定义】

factor(c(“type1”, “type2”, “type1”, “type1”), ordered = TRUE, levels= c(“pool”,” improved”,” excellent”))

【创建有序型变量,为factor()指定参数ordered=TRUE,通过指定levels选项来覆盖默认排序, “pool”,” improved”,”excellent”分别为1,2,3】

6.     列表list

list1 <- list (c(2,5,3), 21.3, sin);

【一些对象的有序组合,对象的类别可以不相同】

list1 <- list (obj1=c(2,5,3), obj2=21.3, sin);

list1[[2]]与list1[[“obj2”]]效果相同

【可以给一些对象命名,也可以不命名,对象使用[x]搜索,其中X是列表的下标,当对象被命名时,也可以使用名字来检索】


二、 向量元素

1.     一个元素为字符串,则其他类型的均转化为字符串

2.     访问向量元素

t <-c("Sun","Mon","Tue","Wed","Thurs","Fri","Sat")

u <- t[c(2,3,6)]

print(u)

[1] "Mon" "Tue" "Fri"

【[ ]括号用于指定索引,索引从位置1开始】

 

# Accessing vector elements using logical indexing.

v <- t[c(TRUE,FALSE,FALSE,FALSE,FALSE,TRUE,FALSE)]

print(v)

[1] "Sun" "Fri"

 

# Accessing vector elements using negative indexing.

x <- t[c(-2,-5)]

print(x)

[1] "Sun" "Tue" "Wed" "Fri""Sat"

 

# Accessing vector elements using 0/1 indexin0g.

y <- t[c(0,0,0,0,0,0,1)]

print(y)

[1] "Sun"

【在索引中赋予负值会从结果中删除该元素。TRUE,FALSE或0和1也可用于索引。】

3.     运算

若长度相同的两个向量,则按常规

若长度不同,则循环使用较短的向量

排序

sort(x)【默认升序排序,增加属性decreasing =TRUE,可以实现降序】


三、 列表list

1.     列表命名names(list_data)<-c(…)【为list_data列表的每一项命名】

2.     列表索引:使用[list_name$row_name]格式可以用名称索引

3.     增删:只可以在列表末尾增删;

改:可以更新任意位置的项目

4.     合并多个列表:newlist<-c(list1,list2)

5.     转换列表为向量unlist(alist),转换后的变量可以使用向量的运算。

6.     listname[1]返回的是仅包含listname的第一个元素的列表


四、 矩阵

1.     matrix(data, nrow, ncol, byrow,dimnames)

data - 是将要转为矩阵元素的输入向量。

nrow - 是要创建的行数。

ncol - 是要创建的列数。

byrow - 是一个逻辑线索。 如果为TRUE,则输入向量元素按行排列。

dimname - 是分配给行和列的名称

【eg:

rownames = c("row1", "row2","row3", "row4")

colnames = c("col1", "col2","col3")

P <- matrix(c(3:14), nrow = 4, byrow = TRUE, dimnames =list(rownames, colnames))】


五、 数据帧

1.     Str(data_frame)【查看数据帧结构】

2.     Summary(data_frame)【查看数据帧摘要,谁是最大,谁中位数等等】

3.     从数据帧中提取数据

result <- data.frame(emp.data$emp_name,emp.data$salary)【提取所有行的某列】

result <- emp.data[1:2,]【提取某行与其所有列】

result <- emp.data[c(3,5),c(2,4)]【提取3,5行的2,4列】

4.     添加数据

emp.data$dept <-c("IT","Operations","IT","HR","Finance")【添加列:用新的列名添加一列数据】

emp.finaldata <- rbind(emp.data,emp.newdata)【把新行添加在末尾】




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值