R 語言

因爲最近又接觸了一下R語言,R語言的用法什麼的一般都需要google,國內貌似很少有討論,可能確實使用並不是太廣泛,應該是金融分析之類的崗位用的多一點吧?

爲了日後再次使用時檢閱方便,我先把最近的一點總結寫在這兒,當是爲日後佔個坑。

ps: 此文中’=‘和’<-'我都混用了,貌似一般賦值都使用<-,但我在使用的時候暫時沒有出現什麼相關錯誤

工作目錄(setwd)

和matlab很類似,在進行文件等操作時,往往需要確定一下工作目錄是否正確,但是我覺得沒有必要再裝一個R-Studio等IDE專門運行R語言,我一般都是直接在R-Console裏面寫,所以需要在文件/命令行裏設置工作目錄。
setwd('C:/Users/leanard/Desktop/temp/102104')

CSV (Comma-Separated Values)

csv——最簡單也是常用的數據格式,用R語言讀入/寫入csv文件的方式如下。

讀入(fread/read.table)

library(data.table)  
data = fread(file=file,sep=sep,header=TRUE)  

read.table('test.csv',sep=',',header=TRUE,fill=TRUE)
fread遠比read.table快得多,更高效,稍微大點的文件都建議用fread

寫入(write.csv)

write.csv(out,'trump.txt',row.names=FALSE)
out是要寫入的data.frame
row.names是因爲一般顯示data.frame的時候都會把行的名字,列的名字(headers)都顯示出來,但是輸入到文件的話,一般只需要headers,也就是列名

安裝包(install.packages)

install.packages(包名)
包名需要用一對單/雙引號引起來

dataFrame

R語言裏有許多數據類型,經常用的兩個是,dataFrame和matrix,matrix每個element類型必須一致,dataFrame比較自由,每個element類型無所謂,所以dataframe用的比較多

創建(data.frame)

x =data.frame(first_col=character(),
			second_col=integer(),stringsAsFactors=FALSE)

以上爲創建一個空的dataframe的例子,如果要初始化一點變量,可以把integer(),character()這些改成你的初始值,但一定要注意,你的初始值的長度要一致,第一列如果有兩行,其他列一定都要是兩行。

創建一組數據(c)

R語言使用c可以創建一組數據,可以保存爲dataframe的一行或者一列

# 同樣,他的數據元素沒有類型限制
c(1,"a")
c("1",a)

行/列擴展

# 行擴展
x = rbind(x,c(1,"a"))
# 列擴展
x = cbind(x,c(1,"a"))

多個變量合併爲一個dataframe

x <- data.frame(value=cbind(in1,in2,in3,in4,in5))  

選中某一行/列([,])

# 選中第一行
x[1,]
# 選中第一列
x[,1]

去重(distinct)

去除某一列中重複的值,不一定爲數字,字符串等都可以

library('dplyr')  
distinct(x[,3])

排序(order)

根據其中一列對整個dataframe進行排序

# 例如根據第一列對x排序
x = x[order(x[,1]),]

行/列數(nrow/col/length)

# 行數
nrow(x)
# 列數
ncol(x)
# 列數
length(x)

行/列名(rowname/colname/names)

# 行名
rowname(x)
# 列名
colname(x)
# 列名
names(x)

篩選

篩出列名中除了第二列名字外的所有名字

col_names = colnames(x)  
col_names = col_names[!col_names %in% col_names[2]]  

For/If

for(i in 1:1000){}
if(a < 100){}

list to Array

將list轉爲array,假設b爲list
a = unlist(b)

時間操作

時間戳

將string轉換爲時間戳

out = strptime(str,"%d/%m/%Y %H:%M")

Date

Date是R語言中很特殊的一種數據結構,我們可以把時間戳轉換爲Date數據結構

out2 = as.Date(out,origin="1970/01/01")  

origin是起始日期,可以自行設置

修改Date內容

比如修改年份,可以單獨/批量修改Date數據的年份信息

library(lubridate)
year(out2) <- year(out2) + 2000  	

畫圖

直方圖(hist)

# 普通直方圖
hist(data)
# 和時間相關的直方圖,先把數據轉爲date數據,然後hist
hist(date,breaks="years")
# 第二個參數可以爲年(years),月(months),日(days),甚至秒(seconds)

箱型圖(boxplot)

箱型圖需要數據對齊,也就是每一列的數據需要相等長度,不然無法執行,在dataframe使用rbind或者cbind擴展的時候,dataframe會自動對齊數據,不夠的地方會自動循環,不會影響結果

boxplot(data)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章