R基本的数据管理

一,创建变量

创建一个数据框

R 复制代码
> myData<-data.frame(x1=c(1,2,3,4,5,6),x2=c(6,5,67,8,9,0))
> myData
  x1 x2
1  1  6
2  2  5
3  3 67
4  4  8
5  5  9
6  6  0

增加一列为两者的和

R 复制代码
> myData$sum<-myData$x1+myData$x2
> myData
  x1 x2 sum
1  1  6   7
2  2  5   7
3  3 67  70
4  4  8  12
5  5  9  14
6  6  0   6

删除一列

R 复制代码
> myData<-myData[,-3]
> myData
  x1 x2
1  1  6
2  2  5
3  3 67
4  4  8
5  5  9
6  6  0

二,变量重编码

创建一个数据框

R 复制代码
manager <-c(1,2,3,4,5)
date <-c("10724/08","10/28/08","10/1/08","10/12/08","5/1/09")
age<-c(32,45,25,39,99)
q2<-c(4,5,5,3,2)
q3<-c(5,2,5,4,1)
q4<- c(5,5,5,NA,2)
q5<- c(5,5,2,NA,1)
survey <- data.frame(manager, date, age, q2, q3, q4,q5,stringsAsFactorS=FALSE)
survey
  manager     date age q2 q3 q4 q5 stringsAsFactorS
1       1 10724/08  32  4  5  5  5            FALSE
2       2 10/28/08  45  5  2  5  5            FALSE
3       3  10/1/08  25  5  5  5  2            FALSE
4       4 10/12/08  39  3  4 NA NA            FALSE
5       5   5/1/09  99  2  1  2  1            FALSE

将年龄大于99岁的值设为NA

R 复制代码
> survey$age[survey$age==99]<-NA
> survey
  manager     date age q2 q3 q4 q5 stringsAsFactorS
1       1 10724/08  32  4  5  5  5            FALSE
2       2 10/28/08  45  5  2  5  5            FALSE
3       3  10/1/08  25  5  5  5  2            FALSE
4       4 10/12/08  39  3  4 NA NA            FALSE
5       5   5/1/09  NA  2  1  2  1            FALSE

将大于75岁的置为老年人,小于50岁的置为中青年

R 复制代码
> survey$age[survey$age>75]<-"老年人"
> survey$age[survey$age<50]<-"中青年"
> survey
  manager     date    age q2 q3 q4 q5 stringsAsFactorS
1       1 10724/08 中青年  4  5  5  5            FALSE
2       2 10/28/08 中青年  5  2  5  5            FALSE
3       3  10/1/08 中青年  5  5  5  2            FALSE
4       4 10/12/08 中青年  3  4 NA NA            FALSE
5       5   5/1/09   <NA>  2  1  2  1            FALSE

三,变量的重命名

直接使用fix函数修改

R 复制代码
> survey
  manager     date   年龄 q2 q3 q4 q5 stringsAsFactorS
1       1 10724/08 中青年  4  5  5  5            FALSE
2       2 10/28/08 中青年  5  2  5  5            FALSE
3       3  10/1/08 中青年  5  5  5  2            FALSE
4       4 10/12/08 中青年  3  4 NA NA            FALSE
5       5   5/1/09   <NA>  2  1  2  1            FALSE

第二种

R 复制代码
> names(survey)[2]<-"日期"
> survey
  manager     日期   年龄 q2 q3 q4 q5 stringsAsFactorS
1       1 10724/08 中青年  4  5  5  5            FALSE
2       2 10/28/08 中青年  5  2  5  5            FALSE
3       3  10/1/08 中青年  5  5  5  2            FALSE
4       4 10/12/08 中青年  3  4 NA NA            FALSE
5       5   5/1/09   <NA>  2  1  2  1            FALSE

四,处理缺失值

r的缺失值用NA表示,NA表示不可用的

R 复制代码
> x<-c(1,2,3,4,5,NA)
> is.na(x)
[1] FALSE FALSE FALSE FALSE FALSE  TRUE

针对空值进行的任何比较和运算 都是空值

na.omit=TRUE 删除NA

删除NA所在的行:

R 复制代码
> manager <-c(1,2,3,4,5)
> date <-c("10724/08","10/28/08","10/1/08","10/12/08","5/1/09")
> age<-c(32,45,25,39,99)
> q2<-c(4,5,5,3,2)
> q3<-c(5,2,5,4,1)
> q4<- c(5,5,5,NA,2)
> q5<- c(5,5,2,NA,1)
> survey <- data.frame(manager, date, age, q2, q3, q4,q5,stringsAsFactorS=FALSE)
> survey
  manager     date age q2 q3 q4 q5 stringsAsFactorS
1       1 10724/08  32  4  5  5  5            FALSE
2       2 10/28/08  45  5  2  5  5            FALSE
3       3  10/1/08  25  5  5  5  2            FALSE
4       4 10/12/08  39  3  4 NA NA            FALSE
5       5   5/1/09  99  2  1  2  1            FALSE
> data<-na.omit(survey)
> data
  manager     date age q2 q3 q4 q5 stringsAsFactorS
1       1 10724/08  32  4  5  5  5            FALSE
2       2 10/28/08  45  5  2  5  5            FALSE
3       3  10/1/08  25  5  5  5  2            FALSE
5       5   5/1/09  99  2  1  2  1            FALSE

五,日期值的使用

将日期格式化

R 复制代码
> mydate<-c("01/05/2020","02/06/2023")
> date<- as.Date(mydate,"%m/%d/%Y")
> date
[1] "2020-01-05" "2023-02-06"

获取当前时间

R 复制代码
> Sys.Date()
[1] "2024-04-26"
> date()
[1] "Fri Apr 26 19:10:44 2024"

format日期

R 复制代码
> format(date,format="%B %d %Y")
[1] "一月 05 2020" "二月 06 2023"

日期的运算

六,类型转换

七,数据集的合并

按列名添加

复制代码
z<-merge(x,y,by="2")

按行添加

z<-rbind(x,y)

八,子集的提取

截取其中几列

R 复制代码
> q<-survey[,2:3]
> q
      date age
1 10724/08  32
2 10/28/08  45
3  10/1/08  25
4 10/12/08  39
5   5/1/09  99

去掉其中一列

R 复制代码
> x<-survey[,-2]
> x
  manager age q2 q3 q4 q5 stringsAsFactorS
1       1  32  4  5  5  5            FALSE
2       2  45  5  2  5  5            FALSE
3       3  25  5  5  5  2            FALSE
4       4  39  3  4 NA NA            FALSE
5       5  99  2  1  2  1            FALSE

获取大于35或者小于24的 q2 q3列

R 复制代码
> newdate<-subset(survey,age>-35 | age<24,select = c(q2,q3))
> newdate
  q2 q3
1  4  5
2  5  2
3  5  5
4  3  4
5  2  1

随机抽样的获取

R 复制代码
> mysample<-survey[sample(5,3,replace=FALSE),]
> mysample
  manager     date age q2 q3 q4 q5 stringsAsFactorS
4       4 10/12/08  39  3  4 NA NA            FALSE
3       3  10/1/08  25  5  5  5  2            FALSE
2       2 10/28/08  45  5  2  5  5            FALSE
>
相关推荐
面试鸭2 分钟前
离谱!买个人信息买到网安公司头上???
java·开发语言·职场和发展
小白学大数据3 分钟前
JavaScript重定向对网络爬虫的影响及处理
开发语言·javascript·数据库·爬虫
Python大数据分析@6 分钟前
python操作CSV和excel,如何来做?
开发语言·python·excel
上海_彭彭32 分钟前
【提效工具开发】Python功能模块执行和 SQL 执行 需求整理
开发语言·python·sql·测试工具·element
3345543240 分钟前
element动态表头合并表格
开发语言·javascript·ecmascript
沈询-阿里44 分钟前
java-智能识别车牌号_基于spring ai和开源国产大模型_qwen vl
java·开发语言
残月只会敲键盘1 小时前
面相小白的php反序列化漏洞原理剖析
开发语言·php
ac-er88881 小时前
PHP弱类型安全问题
开发语言·安全·php
ac-er88881 小时前
PHP网络爬虫常见的反爬策略
开发语言·爬虫·php
爱吃喵的鲤鱼1 小时前
linux进程的状态之环境变量
linux·运维·服务器·开发语言·c++