设为首页 加入收藏

TOP

R语言dataframe的常用操作总结(一)
2019-08-15 00:09:20 】 浏览:202
Tags:语言 dataframe 常用 操作 总结

前言:近段时间学习R语言用到最多的数据格式就是data.frame,现对data.frame常用操作进行总结,其中函数大部分来自dplyr包,该包由Hadley Wickham所作,主要用于数据的清洗和整理。

一、创建

data.frame创建较为容易,调用data.frame函数即可。本文创建一个关于学生成绩的数据框,接下来大部分操作都对该数据框进行,其中学生成绩随机产生

 1 > library(dplyr)       #导入dplyr包
 2 > options(digits = 0)  #保留整数
 3 > set.seed(1)          #设置种子函数
 4 > df <- data.frame(ID = 1:12,                                 #ID
 5 +                  Class = rep(c(1,2,3),4),                   #班级
 6 +                  Chinese = runif(12,min = 0,max = 100),     #语文
 7 +                  Math = runif(12,min = 0,max = 100),        #数学
 8 +                  English = runif(12,min = 0,max = 100))     #英语
 9 > for (i in 1:ncol(df)) {
10 +   df[,i] <- as.integer(df[,i])  #将每列类型变为integer型
11 + }

df结果如下

 1 > df
 2    ID Class Chinese Math English
 3 1   1     1      26   68      26
 4 2   2     2      37   38      38
 5 3   3     3      57   76       1
 6 4   4     1      90   49      38
 7 5   5     2      20   71      86
 8 6   6     3      89   99      34
 9 7   7     1      94   38      48
10 8   8     2      66   77      59
11 9   9     3      62   93      49
12 10 10     1       6   21      18
13 11 11     2      20   65      82
14 12 12     3      17   12      66

二、 查询

1、查询某一行或某一列

可通过 data.frame[行号,] 或者 data.frame[,列号] 操作完成

其中 data.frame[行号,] 得到的类型是数据框

而 data.frame[,列号] 得到的类型是该列的类型

> df[2,]
  ID Class Chinese Math English
2 2 2 37 38 38 > df[,4] [1] 68 38 76 49 71 99 38 77 93 21 65 12

查询某一列还可以通过 data.frame$列名 操作完成

> df$Chinese
 [1] 26 37 57 90 20 89 94 66 62  6 20 17

 data.frame[列号] 得到一个仅包含该列内容的数据框

 1 > df[3]
 2    Chinese
 3 1       26
 4 2       37
 5 3       57
 6 4       90
 7 5       20
 8 6       89
 9 7       94
10 8       66
11 9       62
12 10       6
13 11      20
14 12      17

若要查找符合条件的行,可采用 which() 函数,得到的类型是数据框

> df[which(df$ID == 4),]
  ID Class Chinese Math English
4  4     1      90   49      38

2、查询某一个值

可通过 data.frame[行号,列号] 或 data.frame[行号,‘列名’] 操作完成

> df[3,4]
[1] 76
> df[3,'Math']
[1] 76

若查找符合条件的值,可采用 which() 函数

> df[which(df$Chinese == 57),'Math'] #查询语文成绩为57的同学的数学成绩
[1] 76
> df[which(df$Class == 2),'English'] #查询班级号为2的同学的英语成绩
[1] 38 86 59 82

三、修改

1、修改某一行或列

> df[1,] <- c(1,2,65,59,73)  #修改第一行
#修改英语成绩
> df[,'English'] <- c(23,45,67,87,34,46,87,95,43,76,23,94) 

修改后结果为(1号同学英语成绩先由26修改为73,再修改为23)

 1 > df
 2    ID Class Chinese Math English
 3 1   1     2      65   59      23
 4 2   2     2      37   38      45
 5 3   3     3      57   76      67
 6 4   4     1      90   49      87
 7 5   5     2      20   71      34
 8 6   6     3      89   99      46
 9 7   7     1      94   38      87
10 8   8     2      66   77      95
11 9   9     3      62   93      43
12 10 10     1       6   21      76
13 11 11     2      20   65      23
14 12 12     3      17   12      94

2、修改某一个值

直接将需要修改后的值赋给上述查询某一个值的操作即可

 1 > df[3,'Chinese'] <- 65 #将3号同学的语文成绩修改为65
 2 #将语文成绩低于20的同学的语文成绩修改为20
 3 > df[which(df$Chinese < 20),'Chinese'] <- 20
 4 > df
 5        ID Class Chinese Math English
 6 1   1     2      65   59      23
 7 2   2     2      37   38      45
 8 3   3     3      65   76      67
 9 4   4     1      90   49      87
10 5   5     2      20   71      34
11 6   6     3      89   99      46
12 7   7     1      94   38      87
13 8   8     2      66   77      95
14 9   9     3      62   93      43
15 10 10     1      20   21      76
16 11 11     2      20   65      23
17 12 12     3      20   12      94

3、修改行列名

可用rownames()及colnames()得到数据框的行列名,rownames(data.frame)[行号] 或 colnames(data.frame)[列号] 可得到指定位置的行名或者列名,若修改直接赋值给该变量即可

1 > colnames(df)               #查询列名
2 [1] "ID"      "Class"   "Chinese" "Math"    "English"
3 > colnames(df)[4]            #查询第4列列名
4 [1] "Math"
5 > colnames(df)[4] <- "math"  #修改第4列列名为math
6 #修改列名
7 > colnames(df) <- c("ID","Class","Chinese","Math","English")

四、删除

删除行或列,仅需要选出该数据框的部分行或列,然后将其赋给该变量即可,其中在列号或行号前添加-表示不选该行或该列,在这里,为了方便接下来的操作,我们将选出后的数据框赋给其他变量,要实现删除操作应当将选出后的数据框赋给自己

 1 #选出df第1、3、5列  ( df <- df[,c(1,3,5)] )
 2 > df.tmp <- df[,c(1,3,5)]  
 3 > df.tmp
 4    ID Chinese English
 5 1   1      65      23
 6 2   2      37      45
 7 3   3      65      67
 8 4   4      90      87
 9 5   5      20      34
10 6   6      89      46
11 7   7      94      87
12 8   8      66      95
13 9   9      62      43
14 10 10      20      76
15 11 11      20      23
16 12 1
首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇D02-R语言基础学习 下一篇R数据分析(一)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目