因为最近又接触了一下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)