###向量
```r
x <- c(1,2,3,4,5);print(x)
x <- 1:10;print(x)
x <- seq(from=1,to=10);print(x)
#1~10,步长为2
x <- seq(from=1,to=10,by=2);print(x)
#1~10做的等差数列,平分了50份
x <- seq(from=1,to=10,length.out=50);print(x)
#生成日期变量并用生成的日期变量生成一组日期序列数据
s <- as.Date("2014-1-1")
e <- as.Date("2014-4-1")
dtVec <- seq(from=s,to=e,by=1)
print(dtVec)
print(class(dtVec))
#生成一组重复数据,使用常数初始化指定长度的向量
x <- rep(1,10);print(x) #1 1 1 1 1 1 1 1 1 1
x <- rep("USD",5);print(x) #"USD" "USD" "USD" "USD" "USD"
# sample()取样函数从一组数据中随机取出指定数量的数据
# 第一个参数表示范围
# 第二个参数表示个数
# replace参数决定是否可以重复取数
y <- sample(x=1:100,size=10,replace=F);print(y)
y <- sample(x=c(0,1),size=20,replace=T);print(y)
# 使用正态分布随机数生成函数生成指定数量、平均值、标准差的随机数
# 生成10个均值为100,标准差为20的随机数
x <- rnorm(n=10, mean=100,sd=20;print(x))
```
###数组
```r
#生成向量然后通过设置行列数据转换成二维数组
x <- 1:20
dim(x) <- c(5,4) #将向量转化成5行4列的数组
print(x)
#直接生成数组并初始化每个元素为3.14
x <- array(3.14,dim=c(5,4))
print(x)
--->
[,1] [,2] [,3] [,4]
[1,] 3.14 3.14 3.14 3.14
[2,] 3.14 3.14 3.14 3.14
[3,] 3.14 3.14 3.14 3.14
[4,] 3.14 3.14 3.14 3.14
[5,] 3.14 3.14 3.14 3.14
#可以生成三维数组
#使用正太分布随机数初始化整个数组
#生成40个均值为10,标准差为5的随机数初始化三维数组5行4列2页
x <- array(rnorm(40,10,5),dim=c(5,4,2))
print(x)
print(length(x)) #对于矩阵length()函数得到的是所有元素的总数量
```
###数据框
```
#数据框的形式和excel比较相似
#每一列可以看做是一个向量,类型相同;不同的列数据之间可以有不同的类型
#同列表的重要区别是:数据框要求每一列数据长度相同
#数据框的每一行可以看作是一条记录,每一列可以看作是记录的某一个属性
#数据框是金融大数据处理中非常重要的数据结构,用途很广,必须深入了解
df <- data.frame(symbols=c("MSFT","KO","CSCO"),price=c(40.40, 40.56, 23.02),currency=rep("USD",3),country=rep("USA",3),type=rep("STOCK",3))
df
print(class(df))
#列:股票编码,价格,,货币品种,国家,类型
--->
symbols price currency country type
1 MSFT 40.40 USD USA STOCK
2 KO 40.56 USD USA STOCK
3 CSCO 23.02 USD USA STOCK
cat("df数据框行数为:", nrow(df),"\ndf数据框列数为:",ncol(df),"\n",sep="")
--->
df数据框行数为:3
df数据框列数为:5
cat("df数据框总元素数量为:",length(df),"\n",sep="") #得到的不是总元素个数,也不是行数,而是列数(属性)数量
--->
df数据框总元素数量为:5
```
###列表
```r
#列表使用list()函数来定义,列表中的每个元素可以是单个变量或者是向量,甚至是一个列表
#列表中的每个向量的长度可以不同,这是列表和数据框的重要区别
#数据框是一种形式特殊的列表
lst <- list(symbols=c("MSF","KO","CSCO"),price=c(40.40,40.56,23.02),currency="USD",country="USA",type="STOCK")
lst
- - ->
$symbols
[1] "MSF" "KO" "CSCO"
$price
[1] 40.40 40.56 23.02
$currency
[1] "USD"
$country
[1] "USA"
$type
[1] "STOCK"
print(length(lst)) #共5个元素
```
###日期时间
```r
dtVar <- Sys.Date() #获取当前日期
print(class(dtVar));print(dtVar)
--->
[1] "Date"
[1] "2016-01-05"
dtVar <- Sys.time() #获取当前日期和时间
print(class(dtVar));print(dtVar)
--->
[1] "POSIXct" "POSIXt"
[1] "2016-01-05 12:58:13 CST"
#字符串与时间之间的转换
dtVar <- as.Date("2016-01-05",tz="UTC")
print(class(dtVar));print(dtVar)
--->
[1] "Date"
[1] "2016-01-05"
dtVar <- as.Date("2016/01/05",tz="CST")
print(class(dtVar));print(dtVar)
--->
[1] "Date"
[1] "2016-01-05"
#用数字直接生成日期对象
#ISOdate()函数得到的是一个POSIXct对象
t <- ISOdate(2014,4,17)
print(class(t));print(t)
--->
[1] "POSIXct" "POSIXt"
[1] "2014-04-17 12:00:00 GMT"
#允许继续加入小时,分钟,秒数信息
t <- ISOdatetime(2014,4,17,15,28,48)
print(class(t));print(t)
--->
[1] "POSIXct" "POSIXt"
[1] "2014-04-17 15:28:48 CST"
#将Date日期转化成儒略日期
d <- as.Date("2014-4-17")
as.integer(d) #在R中这是自1970-1-1以来的天数
--->
[1] 16177
julian(d) #在R中这是自1970-1-1以来的天数
--->
[1] 16177
attr(,"origin")
[1] "1970-01-01"
#提取日期中的各个组成部分信息
d <- Sys.time()
p <- as.POSIXlt(d)
print(class(p));print(mode(p));print(p)
--->
[1] "POSIXlt" "POSIXt"
[1] "list"
[1] "2016-01-05 13:02:38 CST"
print(p$year+1900) #p$year 自1900年以来的年份
print(p$mon+1) #p$mon 表示0-11月
print(p$mday) #p$mday 表示该月的第几天
print(p$yday+1) #p$yday 表示该年的第几天,0-365天,元旦当前表示第0天
print(p$wday) #p$wday 对应周几,0-6,周日为0,其他时间和我们日常习惯一致。
```