R语言中创建数据框、数据框的常规操作
1、利用data.frame函数随机生成数据框,dat1为生成的数据框
c1 <- 1:5
c2 <- c(2,5,1,8,6)
c3 <- c("w","q","r","t","p")
c4 <- c("i","w","u","z","v")
dat1 <- data.frame(c1,c2,c3,c4) ##生成数据框
dat1
c1 c2 c3 c4
1 1 2 w i
2 2 5 q w
3 3 1 r u
4 4 8 t z
5 5 6 p v
2、查看变量类型及维度
class(dat1)
[1] "data.frame"
dim(dat1)
[1] 5 4
变量类型为data.frame、数据维度为5行4列。
3、提取数据框中特定数据
dat1[1,] ##提取第一行
c1 c2 c3 c4
1 1 2 w i
dat1[2,] ##提取第二行
c1 c2 c3 c4
2 2 5 q w
dat1[,1] ##提取第一列
[1] 1 2 3 4 5
dat1[,2] ##提取第二列
[1] 2 5 1 8 6
dat1[1] ##仍然是提取第一列,和dat[,1]数据类型不同
c1
1 1
2 2
3 3
4 4
5 5
dat1[2] ##仍然是提取第二列,同上
c2
1 2
2 5
3 1
4 8
5 6
dat1[1:3,] ##提取1至3行数据
c1 c2 c3 c4
1 1 2 w i
2 2 5 q w
3 3 1 r u
dat1[c(1,3,5),] ##提取1、3,5行数据
c1 c2 c3 c4
1 1 2 w i
3 3 1 r u
5 5 6 p v
dat1[,1:3] ##提取1至3列数据
c1 c2 c3
1 1 2 w
2 2 5 q
3 3 1 r
4 4 8 t
5 5 6 p
dat1[1:3] ## 提取1至3列数据
c1 c2 c3
1 1 2 w
2 2 5 q
3 3 1 r
4 4 8 t
5 5 6 p
3、删除数据框中特定数据
dat1[-1,] ##删除第一行数据
c1 c2 c3 c4
2 2 5 q w
3 3 1 r u
4 4 8 t z
5 5 6 p v
> dat1[-2,] ##删除第二行数据
c1 c2 c3 c4
1 1 2 w i
3 3 1 r u
4 4 8 t z
5 5 6 p v
> dat1[-c(1,2),] ##删除1至2行数据
c1 c2 c3 c4
3 3 1 r u
4 4 8 t z
5 5 6 p v
> dat1[,-1] ##删除第一列数据
c2 c3 c4
1 2 w i
2 5 q w
3 1 r u
4 8 t z
5 6 p v
> dat1[-1] ##仍是删除第一列数据
c2 c3 c4
1 2 w i
2 5 q w
3 1 r u
4 8 t z
5 6 p v
> dat1[,-2] ##删除第二列数据
c1 c3 c4
1 1 w i
2 2 q w
3 3 r u
4 4 t z
5 5 p v
> dat1[-2] ##仍是删除第二列数据
c1 c3 c4
1 1 w i
2 2 q w
3 3 r u
4 4 t z
5 5 p v
> dat1[,-c(1:2)] ##删除1至2列数据
c3 c4
1 w i
2 q w
3 r u
4 t z
5 p v
> dat1[-c(1:2)] ##仍是删除1至2列数据
c3 c4
1 w i
2 q w
3 r u
4 t z
5 p v
4、重命名行名、列名
rownames(dat1) ##查看行名
[1] "1" "2" "3" "4" "5"
colnames(dat1) ##查看列名
"c1" "c2" "c3" "c4"
rownames(dat1) <- c("d","x","u","f","e") ## 重命行名
rownames(dat1)
[1] "d" "x" "u" "f" "e"
rownames(dat1)[2] ##查看第二个行名
[1] "x"
rownames(dat1)[2] <- "xxxx" ##重命名第二个行名
rownames(dat1)
[1] "d" "xxxx" "u" "f" "e"
colnames(dat1) <- c("e","q","i","a") ##重命名列名
colnames(dat1)
[1] "e" "q" "i" "a"
colnames(dat1)[3] ##查看第三个列名
[1] "i"
colnames(dat1)[3] <- "xxxx" ##重命名第三个列名
colnames(dat1)
[1] "e" "q" "xxxx" "a"
5、数据框转置,(行列互换)
dat1 <- data.frame(c1,c2,c3,c4) ##重新生成数据框
dat1
c1 c2 c3 c4
1 1 2 w i
2 2 5 q w
3 3 1 r u
4 4 8 t z
5 5 6 p v
t(dat1) ## 数据框转置
[,1] [,2] [,3] [,4] [,5]
c1 "1" "2" "3" "4" "5"
c2 "2" "5" "1" "8" "6"
c3 "w" "q" "r" "t" "p"
c4 "i" "w" "u" "z" "v"
6、依据特定条件过滤数据框数据
c1 <- c(1,3,1,1,3,9)
c2 <- c(2,2,2,8,6,7)
c3 <- c("w","w","r","w","p","u")
c4 <- c("i","i","u","z","v","y")
dat1 <- data.frame(c1,c2,c3,c4) ##重新生成一个测试数据框
dat1
c1 c2 c3 c4
1 1 2 w i
2 3 2 w i
3 1 2 r u
4 1 8 w z
5 3 6 p v
6 9 7 u y
class(dat1) ##查看类型
[1] "data.frame"
dim(dat1) ##查看数据维度
[1] 6 4
dat1[dat1$c1 == 1,] ##提取数据框中第一列中等于1的数据
c1 c2 c3 c4
1 1 2 w i
3 1 2 r u
4 1 8 w z
dat1[dat1$c1 == 3,] ##提取数据框中第一列中等于3的数据
c1 c2 c3 c4
2 3 2 w i
5 3 6 p v
dat1[dat1$c3 == "w",] ##提取数据框中第三列中等于w的数据
c1 c2 c3 c4
1 1 2 w i
2 3 2 w i
4 1 8 w z
dat1[dat1$c1 == 1 & dat1$c2 == 2,] ##提取数据框中第一列等于1而且第二列等于2的数据
c1 c2 c3 c4
1 1 2 w i
3 1 2 r u
dat1[dat1$c1 == 1 & dat1$c2 ==2 & dat1$c3 == "w",] ##提取数据框中第一列等于1、第二列等于2、并且第三列等于w的数据
c1 c2 c3 c4
1 1 2 w i
dat1
c1 c2 c3 c4
1 1 2 w i
2 3 2 w i
3 1 2 r u
4 1 8 w z
5 3 6 p v
6 9 7 u y
dat1[dat1$c1 ==1 | dat1$c2 == 6,] ##提取数据框中第一列等于1或者第二列等于6的数据
c1 c2 c3 c4
1 1 2 w i
3 1 2 r u
4 1 8 w z
5 3 6 p v
dat1[dat1$c1 ==1 | dat1$c2 == 6 | dat1$c4 == "i",] ##提取数据框中第一列等于1或者第二列等于6或者第四列等于i的数据
c1 c2 c3 c4
1 1 2 w i
2 3 2 w i
3 1 2 r u
4 1 8 w z
5 3 6 p v
### "&"号在R中表示而且,"|" 号表示或者。