R数据输入/输出以及dplyr的使用

本文深入讲解了R语言中的数据输入输出操作,包括读取各种格式文件的方法,以及dplyr包的强大功能,如变量创建、数据筛选、排序、汇总等,通过实例演示了如何高效处理数据。

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

一数据的输入输出
1,清空环境中的对象:rm(list=ls())
2,读取文件需要安装三个包分别是,foreign,readstata13,readxl
3,读取不同格式的文件:read.dta13(“表名.dta”),read.csv(“表名.csv”),read_excel(“表名.xlsx”,sheet=“工作表名”)
4,查看表的变量名称:names(表名)
5,查看表中各个向量的内容,表名向量名6,查看数据类型,是名义变量或者是连续变量:class(表名向量名 6,查看数据类型,是名义变量或者是连续变量:class(表名6,,:class(向量名)
二,dplyr包的使用
1,dplyr的几大功能
2,mutate:利用现有的变量在现有的数据中添加一些新的变量
3,select:根据变量名称,提取想要的维度
4,filter:根据一些条件筛选出数据的子集
5,arrange:改变数据的顺序
6,summarise:对数据进行一些总结
7,group_by:对数据进行汇总
8,pipe operator:%>%
9,mutate ,使用mutate新增列,它的优势在于,当要创造多个变量的时候,可以在一个方程中很方便的完成例子

10,select(),和SQL中的select语句很像例子df_subset <- select(df,新增列1:新增列4)
11,filter()的使用,根据变量值来筛选数据,和SQL中的where语句及select语句类似
12,在dplyr之前,R中比较流行的一个根据变量值来筛选数据的方程叫做subset(),其第一个方程是表格名称,第二个参数是行筛选,第三个参数是列筛选,如果没有第三个参数将显示所有的变量。
13,逻辑符号&表示且的关系,|表示或的关系例子

#逻辑符号&表示且的关系,|表示或的关系。
df_subset <- subset(df,新增列1>20&sex=="Male",select=c(新增列1,sex))
#filter()操作逻辑基本上和subset没有什么区别,操作内容稍微丰富了一些
df_subset <- filter(df,新增列1>20&sex=="Male")
#filter()可以利用一个"."来对所有的变量进行一次性操作,这个需要filter_all来做这个subset()是做不到的
df_subset <- select(df,新增列1:新增列4)
#要求所有的变量都必须大于10
df_subset <- filter_all(df_subset,all_vars(.>10))
#要求所有变量中至少有一个变量是大于40的
df_subset <- filter_all(df_subset,any_vars(.>40))
#filter_at先找出符合条件的变量,然后找出这个变量下符合条件的行,例如
#下面的函数的意思是找到最后一个字符是2的变量,而且这些变量中至少有一个是偶数
df_subset <- filter_at(df_subset,vars(ends_with("2")),any_vars((.%%2)==0))

14,arrange()函数,arrange()和R中原有的order()功能类似,根据一些变量的取值的顺序大小重新排列数据的行
方法一
df[order(df$sex),]
#方法二
arrange(df,sex) #默认是升序`

###R基础课程二:数据输入/输出以及dplyr的使用

##首先清空环境中的对象
rm(list=ls())

#查看当前的工作路径
getwd()
#改变工作路径
setwd("C:/Users/zzhbq034/Documents/R学习")
#使用Library()或者require()读取R包
library(foreign)
library(dplyr)
#还没有dplyr包.安装dplyr包
install.packages("dplyr")
library(readstata13)
library(readxl)
安装readx1包
install.packages("readxl")
#读取不同存储格式的数据
professor <- read.dta13("professor.dta")
professor

professor <- read.csv("profrssor.csv")
professor
professor <- read_excel("profrssor.xlsx",sheet="sheet1")
professor

#如何查看变量名称
names(professor)
#如何查看变量
#方法一,使用$
professor$rank

professor$yrssincephd

#如何查看数据类型,是名义变量或者是连续变量
class(professor$rank)  #名义变量
class(professor$yrssincephd) #连续变量

#神一样的dplyr
#dplyr的几大功能
#mutate 利用现有的变量在现有的数据中添加一些新的变量
#select:根据名字提取想要的维度
#filter:根据一些条件筛选出数据的子集
#arrange:改变数据的顺序
#summarise:对数据进行一些总结
#group_by:对数据进行汇总
#pipe operator:%>%

dt <-airquality #空气污染指数的数据

#1.mutate()
#比如说我们这里需要把华氏温度转化成摄氏温度
#一般来说,在R中我们对于dataset进行操作的话,会用到的办法有
#新增列的方式一
names(professor)
df <-professor
df$新增列1 <-(df$yrsservice) +1
#使用mutate新增列
df <-mutate(df,新增列2=yrsservice+1)
#而且,mutate的优势在于,当要创造多个变量的时候,可以在一个方程之中完成
#一次增加多个变量用mutate更方便
df <-mutate(df,新增列3=yrsservice+yrssincephd,新增列4=yrsservice-yrssincephd)

#2select()方程,和sql中的select的语句很像
#如果不用select方法,那么我们要根据变量来挑选dataset的子集会用到的方法是
names(df)
df_subset<-df[c("新增列1","新增列2")]
#而用select的话,不需要加双引号,而且如果需要选择多个变量,那么用dplyr就更加的方便。
df_subset <-select
#一次性挑选多列的话两种方式的对比
#方法一
df_subset <-df[c("新增列1","新增列2","新增列3","新增列4")]
#如果挑选的是连续列的话可以用下面的方式注意","号
df_subset <-df[,7:10]
#如果只知道变量名但是不知道变量的位置还可以用which()函数
#which(names(df)=="新增列1"的含义未新增列1在df的变量中排到第几列
df_subset <- df[,which(names(df)=="新增列1"):which(names(df)=="新增列4")]
#但是用dplyr的select,就可以快捷很多
df_subset <- select(df,新增列1:新增列4)

#filter()的使用,根据变量值来筛选数据,和sql中的where语句和select语句很像
#在dplyr之前,R中比较流行的一个根据变量值来筛选数据的方程叫做subset(),
#第一个参数是数据库名称,第二个参数是行筛选,第三个参数是列筛选,如果没有第三个参数
#将会显示所有的变量
#逻辑符号&表示且的关系,|表示或的关系。
df_subset <- subset(df,新增列1>20&sex=="Male",select=c(新增列1,sex))
#filter()操作逻辑基本上和subset没有什么区别,操作内容稍微丰富了一些
df_subset <- filter(df,新增列1>20&sex=="Male")
#filter()可以利用一个"."来对所有的变量进行一次性操作,这个需要filter_all来做这个subset()是做不到的
df_subset <- select(df,新增列1:新增列4)
#要求所有的变量都必须大于10
df_subset <- filter_all(df_subset,all_vars(.>10))
#要求所有变量中至少有一个变量是大于40的
df_subset <- filter_all(df_subset,any_vars(.>40))
#filter_at先找出符合条件的变量,然后找出这个变量下符合条件的行,例如
#下面的函数的意思是找到最后一个字符是2的变量,而且这些变量中至少有一个是偶数
df_subset <- filter_at(df_subset,vars(ends_with("2")),any_vars((.%%2)==0))

#arrange()函数
#arrange()和R中原有的order()功能比较相似,根据一些变量取值的顺序大小重新排列数据的行
#方法一
df[order(df$sex),]
#方法二
arrange(df,sex) #默认是升序
#.5接下来的部分是dplyr的精华部分也是最能够提高我们数据操作和分析的工具
#group_by(),summarise() 以及%>%
#为什么我们说这三个方程可以极大提高我们的效率呢?很多时候我们对数据进行操作
#经常会涉及到根据数据中的某一个变量来分组,或者进一步地分组进行变量的重组和计算
#普通的R中的方法会非常地麻烦,而dplyr则可以非常简洁高效地完成这个过程
names(df1)
df1 <- df %>% #这里%>%的意思是,我们要在dt这个数据的内部利用任意变量来进行数据操作

  group_by(sex) %>%   #group_by(discipline)的意思是我们将以discipline
    #这个变量的值来将数据划分成不同的组
  summarise(新增列1_mean=mean(新增列1)) #summarise()的意思是,我们会对数据来进行汇总
#还可以多个数据汇总同时操作
df1 <- df %>%
  group_by(sex) %>%
  summarise(新增列1_mean=mean(新增列1),n=n(),新增列1_sd=sd(新增列1))  #n=n()表示每个组的计数项
#还可以根据group来进行分组排序,例如对新增列1进行性别的分组排序
df1 <- df %>%
  group_by(sex) %>%
  arrange(新增列1,.by_group=TRUE)

#花式group_by + summarise
df1 <- df %>%
  group_by(sex) %>%
  summarise(新增列1_min=min(新增列1),新增列1_max=max(新增列1))
#也可以任意第取新增列1排序的第n个值,每种性别下有多少个不同的新增列1的值
df1 <- df %>%
  group_by(sex) %>%
  arrange(新增列1,.by_group=TRUE) %>%
  #nth()获取某一向量的第n个值,其第一个参数为向量名,第二个参数为n代表取第n个值
  #n_distinct()取某一向量有多少个不同值
  summarise(新增列1_3nd=nth(新增列1,10),新增列1_unique=n_distinct(新增列1))
#mutate()和group_by()一起使用
#mutate()和summarise()不同之处在于mutate()是在原有数据中添加一个新的变量
df1 <- df %>%
  group_by(sex) %>%
  mutate(新增列1_mean=mean(新增列1))  #每一行的新增列1是该性别下的平均值

#group_by()还可以有多个group 分组,而且mutate()和summarise()可以同时在一个过程中被使用
professor1 <- professor %>%
  group_by(discipline,rank) %>%
  mutate(service_month=yrsservice *12) %>%
  summarise(salary_dis_rank=mean(salary),yrsservice_avg=mean(service_month)) %>%
#而且还可以将filter()以及select()等方程也加入进来
  filter(salary_dis_rank > 100000)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值