R语言统计分给——数据管理2

参考资料:R语言实战【第2版】

1、日期值

        日期值通常以字符串的形式输入R中,然后转化为数值形式存储的日期边阿玲。函数as.Date()用于执行这种转化。其语法为as.Date(x,"input_format"),其中x是字符型数据,input_format则给出了用于读入日期的适当格式,见下表

符号 含义 示例
%d 两位数字表示的日期 01~31
%a 缩写的星期名 Mon
%A 全称的星期名 Monday
%m 两位数表示的月份 00~12
%b 缩写的月份

Jan

%B 全称的月份 January
%y 两位数表示的年份 24
%Y 4位数表示的年份 2024

        as.Date()函数默认的输入格式为yyyy-mm-dd。

# as.Date()的默认输入格式为"yyyy-mm-dd"
mydates<-as.Date(c('2007-06-22','2004-02-13'))
mydates
# 读取“mm/dd/yyyy”格式的数据
strDates<-c('01/05/1965','08/16/1975')
dates<-as.Date(strDates,"%m/%d/%Y")
dates
# 将leadership数据集中的字符型日期转为日期
myformat<-"%m/%d/%y"
leadership$testDate<-as.Date(leadership$testDate,myformat)
leadership$testDate

        有两个函数对于处理时间戳数据特别实用:Sys.Date()可以返回当天的日期,而date()则返回前的日期和时间。

        我们可以使用函数format(x,format="output_format")来输出指定格式的日期值,并且可以提取日期值中的某些部分:

today<-Sys.Date()
format(today,format="%B %d %Y")
format(today,format="%A")

        R的内部存储日期是使用自1970年1月1日以来的天数表示的,更早的日期则表示为负数。这意味着可以在日期值上执行算术运算。

startdate<-as.Date("2004-02-13")
enddate<-as.Date("2011-01-22")
days<-enddate-startdate
days

        我们也可以使用函数difftime()来计算时间间隔,并以星期、天、时、分、秒来表示。

today<-Sys.Date()
dob<-as.Date("1990-01-13")
difftime(today,dob,units='weeks')

        日期变量也可以转换为字符型变量,使用函数as.Charactet()可将日期值转换为字符型,进行转换后,即可使用一系列字符处理函数处理数据(如取子集,替换,连接等)

2、类型转换

判断 转换
is.numeric() as.numeric()
is.character() as.character()
is.vector() as.vector()
is.matrix() as.matrix()
is.data.frame() as.data.frame()
is.factor() as.factor()
is.logical() as.logical()

        名为is.datatype()这样的函数返回TRUE或FALSE,而as.datatype()这样的函数则将其转换为对应的类型。

a<-c(1,2,3)
a
is.numeric(a)
is.vector(a)
a<-as.character(a)
a
is.numeric(a)
is.vector(a)
is.character(a)

3、数据排序

        在R中,可以使用order()函数对一个数据框进行排序。默认的排序顺序是升序。在排序变量的前面加一个减号即可得到降序的排序结果。

manager<-c(1,2,3,4,5)
date<-c('10/24/08','10/28/08','10/1/08','10/12/08','5/1/09')
country<-c('US','US','UK','UK','UK')
gender<-c('M','F','F','M','F')
age<-c(32,45,25,39,99)
q1<-c(5,3,3,3,2)
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)
leadership<-data.frame(manager,date,country,gender,age,
                       q1,q2,q3,q4,q5,stringsAsFactors = FALSE)

newdata<-leadership[order(leadership$age),]
newdata
# 按照性别和年龄升序排列
attach(leadership)
newdata<-leadership[order(gender,age),]
detach(leadership)
newdata
# 按性别升序和年龄降序排列
attach(leadership)
newdata<-leadership[order(gender,-age),]
detach(leadership)
newdata

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-23 05:00:04       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-23 05:00:04       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-23 05:00:04       45 阅读
  4. Python语言-面向对象

    2024-07-23 05:00:04       55 阅读

热门阅读

  1. transient

    2024-07-23 05:00:04       15 阅读
  2. pytorch深度学习框架基本介绍

    2024-07-23 05:00:04       16 阅读
  3. 数学建模(5)——逻辑回归

    2024-07-23 05:00:04       14 阅读
  4. SpringMVC中的注解驱动

    2024-07-23 05:00:04       15 阅读
  5. C 语言基础概念总结

    2024-07-23 05:00:04       17 阅读
  6. word转pdf图变得模糊(解决)

    2024-07-23 05:00:04       14 阅读
  7. Nginx 中如何实现请求的排队机制?

    2024-07-23 05:00:04       16 阅读
  8. 2024.07.14校招 实习 内推 面经

    2024-07-23 05:00:04       18 阅读