R语言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
  • 12
    点赞
  • 112
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值