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

 

posted @ 2020-09-28 18:41  小鲨鱼2018  阅读(15231)  评论(0编辑  收藏  举报