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