数据基本操作
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 增删数据
- 直接增加列
data1$var10 <- data1$var9+200)
- mutate函数
mutate(data1,var10=var9+200)
- 保留
data1[, c(5,10,25)] #删除第5,10,25列
data1[c(1,2) , ] # 删除第1,2行
- 删除
select(data1, -(var3:var10)) # 删变量3到变量10
5 数据合并
5.1 纵向合并
- rbind():上下叠加,需要变量名相同
- library(“plyr”) #加载获取rbind.fill函数
- rbind.fill函数只能合并数据框格式
- rbind.fill:上下叠加,补全未匹配到的为NA
- 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函数
其规则如下:
- 旧码=新码 旧码只有单一数值。例如:“0=NA”表示将0改为NA。
- 旧码向量=新码 多个旧码改为一个新码。例如:“c(7,8,9)=‘high’”,将7,8,9改为high。
- start:end=新码 有序数字改码。例如:“lo:19=‘C’”。
- 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 做判断。
知识、图片、素材等来源于互联网大佬
侵删