㈠ 用R語言,生成1000個 服從標准正態分布的隨機數,畫出散點圖,頻率直方圖(附加密度曲線)及箱線圖
作為一種語言進行統計分析,R有一個隨機數生成各種統計分布功能的綜合性圖書館。R語言可以針對不同的分布,生成該分布下的隨機數。其中有許多常用的個分布可以直接調用。
在R中各種概率函數都有統一的形式,即一套統一的前綴+分布函數名:
d 表示密度函數(density)。
p 表示分布函數(生成相應分布的累積概率密度函數)。
q 表示分位數函數,能夠返回特定分布的分位數(quantile)。
r 表示隨機函數,生成特定分布的隨機數(random)。
(1)r語言保存股票數據結構擴展閱讀:
注意事項:
1、使用了錯誤大小寫:help()是正確的,其他都是錯誤的。
2、不要忘記使用必要的引號:install.packages(「gclus」)。
3、在函數調用時,不要忘記使用括弧:help()。
4、在Windous上,路徑名中使用的是。
5、R擁有許多用於存儲數據的對象類型,包括標量、向量、矩陣、數組、數據框和列表。數據框是用來存儲數據集的主要數據結構。
㈡ 如何用R語言提取股票行情數據
你好,關於股票價格有關的開盤價格,當日最高價格,當日最低價格,收盤價格,股票交易量;和調整後的價格;
DIA.Open 當日開盤價格
DIA.High 當日最高價格
DIA.Low 當日最低價格
DIA.Close 當日收盤價格
DIA.Volume 當日股票交易量
DIA.Adjusted 當日調整後的價格
㈢ R語言怎麼把股票日收盤價轉換成對數收益率
知道一系列收盤價向量X,length=1000,求對數收益率的R語言代碼
acf(int[,2], lag.max = 15,type = "correlation", plot = TRUE,main='int monthly
acf(int.l[,2], lag.max = 15,type = "correlation", plot = TRUE,main='int monthly
log return')
Box.test(int[,2], lag = 5, type = "Ljung-Box")
Box.test(int[,2], lag = 10, type = "Ljung-Box")
Box.test(int.l[,2], lag = 5, type = "Ljung-Box")
Box.test(int.l[,2], lag = 10, type = "Ljung-Box")
運行結錯誤辦
> int <- read.table("d-intc7208.txt", head=T)
錯誤於file(file, "rt") : 打鏈結
外: 警告信息:
In file(file, "rt") :
打文件'd-intc7208.txt': No such file or directory
+ acf(int.l[,2], lag.max = 15,type = "correlation", plot = TRUE,main='int monthly
錯誤: 意外符號 in:
"
acf(int.l[,2], lag.max = 15,type = "correlation", plot = TRUE,main='int"
> log return')
錯誤: 意外符號 in "log return"
㈣ R語言基礎教程 | 數據結構—因子
變數可歸結為名義型、有序型或連續型變數。名義型變數是沒有順序之分的類別變數。類別(名義型)變數和有序類別(有序型)變數在R中稱為因子(factor)。因子在R中非常重要,因為它決定了數據的分析方式以及如何進行視覺呈現。因子(factor)是R語言中比較特殊的一個數據類型, 它是一個用於存儲 的類型,舉個例子,從性別上,可以把人分為:男人和女人,從年齡上劃分,又可以把人分為:未成年人(<18歲),成年人(>=18)。
R把表示分類的數據稱為因子,因子的行為有時像字元串,有時像整數。因子是一個向量,通常情況下,每個元素都是字元類型,也有其他數據類型的元素。因子具有因子水平(Levels),用於限制因子的元素的取值范圍,R強制:因子水平是字元類型,因子的元素只能從因子水平中取值,這意味著,因子的每個元素要麼是因子水平中的字元(或轉換為其他數據類型),要麼是缺失值,這是因子的約束,是語法上的規則。
通常情況下,在創建數據框變數時,R隱式把數據類型為字元的列創建為因子,這是因為R會把文本類型默認為類別數據,並自動轉換為因子。前面我們在講數據框時,就有提到。
通過class()函數檢查gender列的類,結果是因子類型,而不是字元向量。
可以通過factor()函數創建因子,factor()函數的第一個參數必須是字元向量,通過levels參數顯式設置因子水平。
參數注釋:
例如,因子sex的值是向量c('f','m','f','f','m'),因子水平是c('f','m')
因子水平規定了 因子取值的范圍 ,每一個因子,都包含因子水平的信息,例如,列印gender列,可以看到因子的元素和水平:
該因子中的每個值都是一個字元串,它們被限制為「f」、「m」和缺失值(NA)。如果把其他字元串添加到gender列中,R會拋出警告消息,並把錯誤賦值的元素設置為NA,例如:
因子水平,可以通過函數levels(factor)來查看:
水平的級數,相當於level的長度,可以由nlevels函數查詢到:
使用factor函數創建因子,可以使用labels參數為每個因子水平添加標簽,labels參數的字元順序,要和levels參數的字元順序保持一致,例如:
通常情況下,因子一般是無序的,這可以通過is.ordered()函數來驗證:
因子的順序,實際上是指因子水平的順序,有序因子的因子水平是有序的。在特殊情況下,有些因子的水平在語義上大於或小於其他水平,R支持按順序排列的因子,使用ordered函數,或通過給factor函數傳入order=TRUE參數,把無序因子轉換為有序的因子。
ordered()函數不能指定特定因子水平的順序,通常情況下,因子中先出現的水平小於後出現的水平。例如,通過ordered函數把sex因子轉換為有序的因子:
通過factor函數創建有序因子,通過levels指定因子的順序。
因子的順序,其實是因子水平的順序,我們可以通過levels,使現有的因子按照指定的因子水平來排序。
例如,把heights數據框的gender,按照指定的levels,轉換成有序因子:
在數據清理時,可能需要去掉與因子水平對應的數據,通常情況下,需要刪除未使用的因子水平,可以使用droplevels函數,它接受因子或是數據框作為參數。
如果x是數據框,那麼把數據框中未使用的因子刪除。
在數據清理中,有時需要把因子轉換為字元,通常情況下,使用as.character()函數,把因子轉換為字元串:
使用as.numeric()或as.integer()函數可以把因子轉換成對應的整數.
函數 cut() 能夠把數值變數切成不同的塊,然後返回一個因子.
參數注釋:
例如,把身高數據,按照指定的切割點向量分割:
當需要把因子轉換為有序因子時,要注意因子水平的順序.
㈤ R語言中的幾種數據結構
R語言中的幾種數據結構
一 R中對象的5種基本類型
字元(character)
整數 (integer)
復數(complex)
邏輯(logical:True/False)
數值(numeric:real numbers)
查看對象類型的命令:class(x)
二 R語言中有如下幾種數據結構:
向量 vector() 組內元素必須類型一致,否則將會被強制轉換。
(1) 創建向量的三種方式:
<span style="font-size:18px;">x <- vector("numeric", length = 10)
x <- 1:4
x <- c("a",12,TRUE)</span>
(2) 強制轉換的幾個函數:
as.numeric(x) / as.character(x) / as.logical(x)
矩陣 matrix() 一列一列的填充元素
按行合並:rbind() 按列合並:cbind()
數組 array() 可以有多個維度
列表 list() 可以包含不同類型的元素
因子 factor()
(1) 分類數據/有序 vs. 無序
(2) 整數向量+標簽(label)(優於整數向量)
Male/Female vs. 1/2
常用於lm(),glm()
(3) levels設置基線水平
table() 查看因子信息 unclass() 去除因子屬性日期
x <- Sys.Date() 得到系統當前日期
julian(x) x距離1970-01-01的天數
時間 POSIXct / POSIXlt
POSIXct:整數,常用於存入數據框 as.POSIXct()
POSIXlt:列表,還包含星期、年月日等信息。as.POSIXlt()
strptime(x, format = "...") 將一般格式轉化為時間格式
㈥ R語言數據結構-向量
R語言數據結構主要有以下四種:
向量:一串相同類型的數據,不限於數字,字元,邏輯都可以,單獨拿出來的一列。什麼是看做一個整體,一個向量里有若干個數據,它們組成一個整體之後,可以擁有一個共同的名字。
以下主要講向量:
向量就是一串數據,串聯在一起,組成一個整體,向量由元素組成。
很長的向量要麼從數據框提取一列,或是有規律地生成,如連續的數據:
paste0函數連接兩個向量,逗號 , 前後各有一個向量,如字元型和數值型向量。
paste0和paste的區別是:
paste0函數 把兩個向量的元素一一對應進行 無縫 連接,而 paste函數 把兩個向量的元素一一對應進行 空格 連接。paste函數有默認值為空格,在空格處把空格去掉sep=""引號里把默認的空格去掉,即什麼沒有,就變成無縫連接,也可以用其它的符號連接sep="/",sep="_"等。
數值型、字元型、邏輯型:只要有字元型在,用c()生成向量為字元型。只有邏輯型和數值型,用c()生成向量為數值型。
c()函數生成向量時,要求為生成同一種數據類型
注意的地方:
變數名 :c()為生成向量函數,一般除字母c外,取單個字母或是單詞及縮寫,組成變數名的字母之間不要有空格,不能以數字為變數名或是以數字開頭,變數名不能是中文名,特殊符號等。
<- 與c()函數之間沒有空格。
<- 的快捷鍵輸入:
mac電腦: option 和 - ;
windows電腦: Alt 和 -
= 在任何情況下可替代 <- ,但是 = 除了賦值,還有其它用法,比如函數里參數用法。 <- 不能在任意情況下代替 = 。
強大的計算是體現在批量計算上,先把一些數據組成一個整體,
還是以向量x為單位進行
其中五個重要函數,一定要掌握。
能用函數代替的東西,堅決不用手和眼睛去數,比如length()統計向量元素個數。
結論:unique(x)與x[!plicated(x)]函數相同
用identical()可以判斷兩個函數是否相同(數據結構與數據類型是否完全相同)
重點和難點:
x==y :x和對應位置的y相等嗎?(x和y里的元素,按順序一一對應比較,講究位置對應,兩者里第一個元素相同就返TRUE,比較完兩個向量的第一位置上的元素,接著比較兩個向量第二個位置元素...到兩個向量最後)。
x和y不一樣長:理解「循環補齊」
結論: 如果x與y的向量元素長度不相等,以長度向量說了算,不是由在==前的向量決定。
x%in%y :x的每個元素在y中存在嗎?(x的元素挨個到y里和所有元素比較,在y里有的相同的返回TRUE,不講究位置,有就是TRUE,沒有為FALSE)。比如y向量加了一個元素2,返回還是9個邏輯值,返回的邏輯值是與x一一對應,和y沒有關系。
加減乘除,兩個向量直接可以進行,等位運算。前提是兩個向量必須等長,即元素個數一樣。
用paste0或是paste連接兩個向量,兩個向量的長度(元素個數)不一致,循環補齊。
intersect(x,y),union(x,y),setdiff(x,y),setdiff(y,x),x與y順序顛倒(setdiff()與%in%有點兒相似)。
[] :取子集符號,將TRUE對應的值挑選出來,FALSE丟棄.
例:在13個數中,取出大於7的數,首先把13個數值組成一個向量x,x>7返回是邏輯值。
取值子集的對象放在中括弧的外面,取子集的邏輯值向量放在中括弧裡面。
單獨運行中括弧里的向量,中括弧里各種條件的返回結果有共同的規律,是一個與x等長的邏輯值向量。
下標:代表在哪個位置上。
符號 : []
按照邏輯值: 中括弧里是與x等長的邏輯值向量
按照位置: 中括弧里是由x的下標組成的向量(支持反選)
思考:從13個彩色(綠,藍,黃)球中,選出屬於藍色和綠色的:
使用x %in% y還是x ==y,用x %in% y,不是等位循環補齊運算,%in%比較靈活,可以在很多場景中使用,如3選2,50選2,50選20等。
13個球的顏色賦值給向量x,藍色和綠色賦值給y。
x %in% y
x[x %in% y]
修改向量的元素,修改x里的第四個元素
注意:R於語言里所有的修改,都要賦值,沒有賦值就是沒有發生過
把隨機函數生成的數永遠為一組數據:用隨機函數生成向量,後運行set.seed(10086)
x[match(y,x)] 和 x[order(x)]
排序,如何調整元素順序
結論:sort(x)等於x[order(x)],背誦下來
兩個向量沒有做關聯的操作,可以用order函數排序對應信息
向量匹配排序-match,match函數是連線用的
x[match(y,x)] 的以後用法:以y作為模版,給x調順序。
match:誰在中括弧外面,誰就在後面, x[match(y,x)] ,以y作為模板,用x作為原料去取子集,按照一個順序取子集,取出來的子集和y一樣。
需要背誦的兩個用法: x[match(y,x)] 和 x[order(x)]
練習題:在以下x和y表格里如何將y的列名一對一替換為ID
切換Rproj的時候出現彈窗:是否將工作空間保存到 .Rdata ?
答案是:不保存,之前單獨保存好腳本和圖片,這里出現的提示是否臨時保存,不需要保存。
.Rdata ?是什麼:
以 . 開頭的文件,通常用作配置,系統默認隱藏這類文件
.Rdata 是保存工作空間的默認文件
.History 是保存歷史命令的默認文件
如果打開Rstudio特別慢,可能是因為 .Rdata 保存了很大的變數,可以找到 .Rdata 文件將其刪除。
在Rproj右下角打開腳本時,編輯器腳本的中文注釋出現亂碼,解決如下:
以上內容是聽 生信技能樹 小潔老師的 R語言線上課 ,根據自己的理解記錄下來,小潔老師授課非常細心,對不同水平的同學都照顧到,並且補充很多技巧以及注意事項。
之前學習過R語言,那時對向量認識不夠深,也沒有重視,數據框的列單獨拿出來就是一個向量。認真聽小潔老師的講解以及最近跑幾個GEO數據集發現學會對向量的熟練操作以及熟練一些重要的函數,在實戰過程中會順利些。
㈦ R語言數據結構-數據框&矩陣&列表
R語言數據結構主要有以下四種:
四種數據結構,重點掌握 向量 和 數據框
判斷數據結構的函數: class()
向量的詳細講解在上一篇文章,以下主要講數據框,矩陣,列表:
以下大部分操作使用的數據框為df
幾個重要的函數:查看數據框的行數和列數,行名和列名;以及單獨查行的數量,列的數量
數據框取子集有幾種方法 : $ 符號,坐標,名字,邏輯值
在 [,] 里,行在前面(左邊),列在後面(右邊),行與列用逗號 , 隔開: [行,列]
中括弧里的逗號,表示維度的分割
數據框按照邏輯值取子集,TRUE對應的行/列留下,FALSE對應的行/列去掉。
修改第二列的列名,就是修改列名這個向量的第二個元素
https://blog.csdn.net/weixin_39718006/article/details/110516670
後續的筆記會有詳細介紹
矩陣不能用 $ 符號取子集
t():轉置函數,行與列的互換
as.data.frame():轉換,把矩陣變為數據框 ,用as.matrix()函數也能把數據框變為矩陣
聚類,相似的行,相似的列會聚在一起。熱圖自動聚類,行和列的相對位置發生了變化,只是列與列,行與行之間的變化規律。
![熱圖自動聚類]]( https://upload-images.jianshu.io/upload_images/17511166-f6e2432a04cffbbe.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240 )
熱圖默認聚類,修改參數,不讓聚類,熱圖與表達矩陣對應。
默認的設置不符合自己的預期,可以子啊作者允許的范圍內定義。
查看函數幫助文檔,參考修改,達到自己的要求。
列表沒有列名和行名,只有元素的名字。列表可以由數據框,矩陣,向量,單獨的一個數字都可以組成。
列表沒有行和列的概念,只有元素,取子集的兩種方式: [[]] , $ ,
$ 有兩個作用:數據框取子集和列表取子集。在矩陣和向量里不能用 $ 。
用 class() 函數更能具體說明問題, 判斷數據結構和數據類型
以上內容是聽 生信技能樹 小潔老師的 R語言線上課 ,根據自己的理解記錄下來,小潔老師授課非常細心,對不同水平的同學都照顧到,並且補充很多技巧以及注意事項。
認識R語言的四種數據結構,小潔老師強調重點掌握向量和數據框,在實戰中遇到很多數據結構都是數據框,表達矩陣可以轉化為數據框,數據框的一列可以看做是一個向量。小潔老師把實戰中會需要的操作融入到練習題,在實戰中能聯想起小潔老師講過的知識點。
㈧ 正在學慣用R語言編寫股票自動交易軟體,但是對股票以及R語言都知之甚少。求高手指點。
我和你一樣,也在學,大智慧新一代,通達信,和飛狐這幾個你任選一個先學,以後慢慢的都會了。飛狐相對要復雜一些,要想編出功能更強大的公式,飛狐里還會用到VBS和JS腳本,還會用到C語言,別的公式不會用到這些。
㈨ R語言里的一個語句不明白啥意思
在quantmod包裡面;
getSymbols(Symbols = NULL,
env = parent.frame(),
reload.Symbols = FALSE,
verbose = FALSE,
warnings = TRUE,
src = "yahoo",
symbol.lookup = TRUE,
auto.assign = getOption('getSymbols.auto.assign',TRUE),
...)
auto.assign=F表示不自動賦值;需要手動指定變數去存儲數據。否則就是自動賦值給Symbols變數。
㈩ 如何用R語言的quantmod包獲取一系列股票的歷史日線數據
我舉個例子供你參考:
> install.packages('quantmod') # 安裝安裝quantmod包
> require(quantmod)#引用quantmod包
> getSymbols("GOOG",src="yahoo",from="2013-01-01", to='2013-04-24') #從雅虎財經獲取google的股票數據
> chartSeries(GOOG,up.col='red',dn.col='green') #顯示K線圖