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
>
相关推荐
u0104058363 分钟前
Java后端开发中的数据保护:如何实现全面的数据加密
java·开发语言
唐 城31 分钟前
Debian 配置 Python 开发与运行环境
开发语言·python
白子寰42 分钟前
【C++打怪之路Lv6】-- 内存管理
开发语言·c++
LunarWave1 小时前
12-指针和动态内存-malloc calloc realloc free
c语言·开发语言·c++
好好学习O(∩_∩)O1 小时前
[Linux][进程] 进程终止
linux·开发语言·c++
杨荧1 小时前
【JAVA开源】基于Vue和SpringBoot的周边产品销售网站
java·开发语言·vue.js·spring boot·spring cloud·开源
橘橙黄又青1 小时前
多线程-初阶(1)
java·开发语言
.浓茶1 小时前
c++11
开发语言·c++
宇卿.1 小时前
Java中的while和do...while循环
java·开发语言
等什么君!2 小时前
JavaScript数据类型
开发语言·前端·javascript