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中表示而且,"|" 号表示或者。