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
>
相关推荐
BUG研究员_8 小时前
Runnable与LCEL
开发语言·人工智能·python
牛艺翔10 小时前
C++基础
开发语言·c++
键盘会跳舞10 小时前
C++ :容器适配器stack源码级拆解
开发语言·c++··stack·先进后出
美味蛋炒饭.10 小时前
Git 版本控制(下)
开发语言·git·学习·总结·后端开发
我星期八休息10 小时前
网络编程—网络层
开发语言·前端·网络·人工智能·智能路由器
问商十三载10 小时前
RAG 检索效果差怎么排查?2026 五层诊断法完整指南
开发语言·人工智能·windows·python·算法
不负岁月无痕10 小时前
简单理解操作系统结构
java·linux·c语言·开发语言·c++·面试
SomeB1oody11 小时前
【RustyML入门】2.9. MeanShift
开发语言·后端·机器学习·rust·教程
萧瑟其中~11 小时前
多线程锁详解:互斥锁·自旋锁·读写锁(CAS + futex 原理)
开发语言·c++
qq_4480111611 小时前
C语言中的指针函数和函数指针
java·c语言·开发语言