#############用R获取数据##########
###1.获取内置数据集
#查看datasets包帮助文档
help(datasets)
?datasets
#查看datasets包里的全部内置数据集
data(package="datasets")
#调用datasets包某个具体的数据集
data(women)
women
#下载MASS包
install.packages("MASS")
#运行MASS包
library(MASS)
#查看MASS包里的全部内置数据集
data(package="MASS")
#调用MASS包中bacteria数据集
data(bacteria)
bacteria
#data()函数总结
#查看已加载R包的数据集列表
data()
#调用特定数据集,也可以直接输入数据集名称
data(women)
data(bacteria)
women
bacteria
data(rivers)
rivers
#查看某个特定的R包包含哪些数据集
data(package="datasets")
data(package="MASS")
#查看所有可获取的数据集
data(package=.packages(all.available=TRUE))
###2.模拟特定分布的数据
#rnoorm()用于生成服从正态分布的随机数
r1<-rnorm(1000,mean=0,sd=1)
hist(r1)
#runif()用于生成服从区间[min,max]上均匀分布的随机数
r2<-runif(10000,min=0,max=100)
hist(r2)
#rbinom() 用于生成服从二项分布的随机数
r3<-rbinom(n=100,size=100,prob=0.1)
hist(r3)
#rpois()用于生成服从poisson分布的随机数
r4<-rpois(n=50,lambda=1)
hist(r4)
###3.获取其他格式的数据
#使用键盘输入数据
#创建一个空数据框
data1<- data.frame(ID= character(),
age= numeric(),
sex=factor(),
MaritalStatus=logical())
#文本编辑器
d1<-edit(data1)
d1
#修改数据
d1<-fix(d1)
d1
#导入工作目录中的文件需要设置好文件所在的工作目录
#查看当前工作目录
getwd()
#改变工作目录
setwd("F:/data")
#从带分隔符的文本文件导入数据
?read.table
d2<-read.table("data2.txt",header=F,sep=",")
d2
d3<-read.csv("F:/data/data3.csv")
d3<-read.csv("data3.csv")
d3
###导入Excel数据
install.packages("openxlsx")
library(openxlsx)
d4<-read.xlsx("data4.xlsx")
d4
install.packages("tidyverse")
install.packages("readxl")
library(readxl)
d4<-read_excel("data4.xlsx")
d4
#导入其他统计软件的数据(SPSS、SAS、Stata)
install.packages("foreign")
library(foreign)
?read.spss
d5<-read.spss("data5.sav",use.value.labels = F)
d5
View(d5)
install.packages("Hmisc")
library(Hmisc)
d5 <- spss.get("data5.sav", use.value.labels=F)
#use.value.labels=TRUE表示让函数将带有值标签的变量导入为R中水平对应相同的因子
d5
#导出数据
#导出文本数据
write.table(d2,file = "data02.txt")
write.csv(d3,file = "data03.csv")
#导出Excel数据
write.xlsx(d4,file = "data04.xlsx",rowNames = TRUE)
#导出导入其他统计软件的数据
write.foreign(d5,file="data05.sav",package="SPSS")
#R数据的保存与加载
save(d4,file = "data04.rdata")
rm(d4) #将对象a从R中删除
load("data04.rdata")
print(d4)
###rio包导入和导出数据
#下载rio
install.packages("rio")
#运行
library(rio)
#准备内置数据做举例子
data("infert")
str(infert)
#用rio包中export()将数据导出为想要的格式
export(infert,"infert.csv")
#rio包中convert()实现不同文件之间的转换
convert("infert.csv","infert.sav")
#import()导入文件
infert.data<-import("infert.sav")
#比较原始数据与导入数据的差别
str(infert)
str(infert.data)
#as系列函数可以用于实现变量类型转变
infert.data$education<-as.factor(infert.data$education)
str(infert.data)
###练习题
#将survival包里的数据集lung加载到工作目录,并查看其帮助文档
install.packages("survival")
library(survival)
data(package="survival")
?lung
lung
data(cancer, package="survival")
#用函数生成均值为168,标准差为10的正态分布的1000个随机数,最后用hist()查看其分布
set.seed(1234)
r<-rnorm(1000,mean=168,sd=10)
hist(r)
#用write.csv()将datasets包里的iris导出为一个.csv文件,然后用函数read.csv()读入该文件,比较读入数据和原始数据的差异
iris
write.csv(iris,file = "iris.csv")
data.iris<-read.csv("iris.csv")
str(iris)
str(data.iris)