R语言数据操作(Data Manipulation with R)(Chapter 1.1 - 1.2 )
前言:笔者目前正在学习 菲尔·斯佩克特博士 的《R语言数据操作》一书,这本书专门讲解了R语言中关于数据的一些基本操作,十分适合初学者使用。笔者在学习过程中,将其中的重难点(笔者学识有限,难免出现纰漏错误,如有发现,虚心求教)罗列在本文中,本文会持续更新,希望能帮到初学R语言的网友,一起进步!
#####第一章 R中的数据#####
> ##### 1.1 模式和类
> #1.数据模式,常见单个数据的数据模式是:“数值型”、“字符型”、“逻辑形”
> #显示对象的模式
> mode()
> #显示对象的类即最顶层对象类型
> class()
> #提供对象类型的额外信息即最细的对象类型
> typeof()
>
> #2.类型数据,R提供 “因子类” 来存储类型数据;另一个重要的数据类型是 “日期和时间”(第四章)
> #3.最常见的数据模式是列表,可以适应不同模式和长度的对象
> mylist <- list(a = c(1,2,3), b = c("cat","dog","duck"), d= factor("a","b","c"))
> sapply(mylist, class)
a b d
"numeric" "character" "factor"
> sapply(mylist, mode)
a b d
"numeric" "character" "numeric"
>
> #单个数据:数值型 字符型 逻辑型 日期型 因子型
> #多个数据:矩阵 数组 数据框 列表
> ##### 1.2 R的数据的存储
> ###向量(Vector)
> #标量
> x <- c(1,2,3,4,5)
> x
[1] 1 2 3 4 5
> mode(x)
[1] "numeric"
> #向量中含有字符,其他元素将转换为“字符型”
> y <- c(1,2,"Cat",4)
> y
[1] "1" "2" "Cat" "4"
> mode(y)
[1] "character"
> #与“数值型”合并的“逻辑型”元素,“逻辑型”元素被转化为“数值型”,1为True,0为False
> z <- c(5,TRUE,3,7)
> mode(z)
[1] "numeric"
> #c函数可以合并向量,整个向量转化为“字符型”
> all <- c(x,y,z)
> all
[1] "1" "2" "3" "4" "5" "1" "2" "Cat" "4" "5" "1" "3" "7"
> #向量命名,ps:在括号内部只涉及一层引用时,‘与“作用相同
> x <- c(one = 1, two = 2, three = 3)
> x
one two three
1 2 3
> x <- c(1,2,3)
> names(x) = c("one", "two", "three")
> x
one two three
1 2 3
> names(x)[1:2] = c("uno", "dos")
> #当运算涉及一个向量与一个标量时,R将默认重复标量
> num <- 1:10
> num +1
[1] 2 3 4 5 6 7 8 9 10 11
>
> num <- 1:10
> num + c(1,2) #第一个加上1,第二个加上2,第三个加上1,第四个加上2......
[1] 2 4 4 6 6 8 8 10 10 12
>
> num <- 1:10
> num + c(1:3)
[1] 2 4 6 5 7 9 8 10 12 11
Warning message:
In num + c(1:3) :
longer object length is not a multiple of shorter object length(由于num的长度与不是3的倍数)
>
> ###数组(矩阵是特殊的数组)
> #nrow=和ncol=分别指定矩阵的行数和列数
> #row.names/col.names可以修改行/列的名字。也可以用dimnames=修改行列名称,但dimnames值必须是一个列表,第一个元素是行名,第二个元素是列名,可以对不希望命名的维度赋值为NULL
> #dim是长度为2的向量,包括行数和列数
> rmat <- matrix(rnorm(15), 5, 3, dimnames = list(NULL, c("A", "B", "C")))
> rmat
A B C
[1,] -0.74918840 0.6815867 0.4170505
[2,] -0.58448427 -1.2883553 0.3893633
[3,] 0.41445473 -0.1486088 0.5237430
[4,] 0.02052517 -0.2792086 -1.1697487
[5,] -0.53318140 0.7653371 -3.0910101
> #或者
> dimnames(rmat) = list(NULL, c("A", "B", "C"))
>
> ###列表
> #列表提供了一种在单个R对象存储不同模式对象的方法,当形成一个列表式,列表中每个对象的模式都保留下来,元素的长度可以不同
> mylist <- list(c(1,4,6), "dog", "3", "cat", TRUE, c(9,10,11))
> mylist
[[1]]
[1] 1 4 6
[[2]]
[1] "dog"
[[3]]
[1] "3"
[[4]]
[1] "cat"
[[5]]
[1] TRUE
[[6]]
[1] 9 10 11
> sapply(mylist, mode)
[1] "numeric" "character" "character" "character" "logical" "numeric"
> sapply(mylist, class)
[1] "numeric" "character" "character" "character" "logical" "numeric"
> #命名
> mylist <- list(first = c(1,3,5), second = c("one","two","three"), third = "end")
> mylist
$`first`
[1] 1 3 5
$second
[1] "one" "two" "three"
$third
[1] "end"
> mylist <- list(c(1,3,5), c("one","two","three", "end"), c("a","v"))
> names(mylist) = c("first", "second", "third")
> #数据框的模式是list,类是data.frame,数据框每个元素长度相同
posted on 2018-07-15 22:05 DataMaySpeak 阅读(211) 评论(0) 收藏 举报
浙公网安备 33010602011771号