R语言与数据基本处理

本文介绍了R语言的数据处理,包括数据导入导出、排序、筛选、增删数据、合并及变量值编码。重点讲解了dplyr包的使用,如arrange、filter、select和merge函数,以及rbind和cut函数在数据操作中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据基本操作

1.数据导入与导出

1.https://www.jianshu.com/p/8655f63b4d6c
2.https://jingyan.baidu.com/article/ca41422f3ac65f1eae99ed36.html
在这里插入图片描述
(1)安装读取数据需要的包
(2)根据规则,写好文件位置,开始读取数据。
(3)通过RStudio菜单导入数据

其他操作

可以用用dplyr包

2.数据排序

格式:arrange(数据集名称,变量名称)
如果需要根据多个变量进行排序,按顺序即可
desc表示逆序

arrange(data1, var1, var2, desc(var3))

3.数据筛选

1 subset函数

subset(data1,var1 = "人民" & (var2 >50 | var3 <20 ))

2 filter
格式:filter(数据集名,变量名)
如果需要根据多变量多条件进行筛选,加上 & 和 | 即可

filter (data1,var1 =1 | var2 >6)
filter (data1,var1 =1 & var2 >6)

3 select

select(data1,var1:var10)

4 distinct去重

distinct(select(data1,var1,var2))

4 增删数据

  1. 直接增加列
data1$var10 <- data1$var9+200)
  1. mutate函数
mutate(data1,var10=var9+200)
  1. 保留
data1[, c(5,10,25)]    #删除第5,10,25列
data1[c(1,2) , ]       # 删除第1,2行
  1. 删除
select(data1, -(var3:var10))    # 删变量3到变量10

5 数据合并

5.1 纵向合并
  1. rbind():上下叠加,需要变量名相同
  2. library(“plyr”) #加载获取rbind.fill函数
  3. rbind.fill函数只能合并数据框格式
  4. rbind.fill:上下叠加,补全未匹配到的为NA
  5. dplyr::bind_rows(),不匹配到的放在最后,NA表示
5.2 横向合并

1.merge函数

merge(data1, data2, by="id", all=T)
 #所有数据列都放进来,空缺的补值为NA,
 若没有 all =T,则默认只只取两者的共有的部分。
其中,all=T代表全连接,all.x=T代表左联结;all.y=T代表右连

2.dplyr包

full_join(data1, data2, by ="ID" ) #同上all = T
left_join       # 同上all.x = T
righr_join      # 同上all.y = T
inner_join      #同上默认

6变量值编码

1.使用car程序包中的recode函数

其规则如下:

  1. 旧码=新码 旧码只有单一数值。例如:“0=NA”表示将0改为NA。
  2. 旧码向量=新码 多个旧码改为一个新码。例如:“c(7,8,9)=‘high’”,将7,8,9改为high。
  3. start:end=新码 有序数字改码。例如:“lo:19=‘C’”。
  4. else=新码 所有其他情况。例如:“else=NA”。
    程序示范:
recode(var1,"c(1,2)='A';else='B'")
recode(var1,"lo:40=1;41:60=2;61:80=3;81:hi=4;else=NA")
recode(var1,"lo:40='A';41:60='B';61:80='C';81:hi='D';else=NA")
recode(var2," 'A' =1; 'B' =2; else=NA"
#lo:最低,hi:最高
2. 数值分割

适用于数值型
基本语法:
cut(var,breaks,labels,include.lowest=F,right=T)
var需要是数值变量。
(1)breaks为分割点信息。若breaks为向量,则根据向量中的数字进行分割。若breaks为大于1正整数k,则将x分成均等的k组。
(2)labels为分割后各组的名称,若为null,则输出数字向量,否则输出factor变量。
(3)include.lowest=FALSE表示分割时不含各区间端点的最小值。
(4)right=T表示各区间为左端open,右端closed的区间
示列:

cut(var1,breaks = c(0,10,20,max(x)),labels = c("低", "中", "高"))
cut(var1,breaks = 5)

7 数据替换

如果我们有以下两个变量,变量var1表示样本身份证上的年龄,变量var2表示如果样本身份证上的年龄错误时的真实年龄。如下

var1 <- c(50,55,60,65,64,NA,58,60,NA)
var2 <- c(NA,NA,61,NA,60,NA,NA,NA,64)
#需要产生新变量var3为真实年龄,如下
var3 <- ifelse(is.na(var2), var1,var2)
#以上用到ifelse语句,其含义为如果var1值为缺失,
赋值为var1,否则赋值为var2

注意,不能用var2 == "NA"这样的语句,会出错,因为NA不能作判断,而要用is.na 做判断。

知识、图片、素材等来源于互联网大佬
侵删

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值