1.读文件:
读CSV文件:
U <-read.csv(("G:/JD_data/data/JData_User.csv"),header=TRUE)
//不加header默认False,即就是数据框的列名为V1,V2...
//header=TRUE,第一列为列名
2.随机抽样
sample(x, size, replace = FALSE, prob = NULL)
//replace 是否放回抽样
//prob 所抽取元素的概率
//x里面抽size个数据
- 可以用于数据框的随机提取某几行数据
3.读取数据框信息
(1)数据框行数:nrow
(2)数据框列数:ncol
(3)转化为矩阵:data.matrix()
4.合并数据框
(1)横向合并
merge(x = df1, y = df2, by = "某列", all = TRUE)
//inner
merge(x = df1, y = df2, by = "CustomerId", all.x = TRUE)
//left(以x为主)
merge(x = df1, y = df2, by = "CustomerId", all.y = TRUE)
//right(以y为主)
merge(x = df1, y = df2, by = NULL)
//outer(相当于笛卡尔积)
(2)纵向合并
rbind(df1,df2)
plyr包中可以将两个列数不同的数据框进行垂直合并(纵向合并),没有该列的用NA填充,代码:
library("plyr")
df.new <- rbind.fill(df1,df2)
5.数据框去重
df1 <- df1[!duplicated(df1),]
//去掉所有重复的行
df1 <- df1[!duplicated(df1[,c(2,3)]),]
//去掉第2和第3列重复的行
6.缺失值处理
NA:代表缺失值
NaN:代表不可能的值
Inf:代表正无穷
-Inf:代表负无穷
is.na():识别缺失值
is.nan():识别不可能值
is.infinite():无穷值
complete.cases()可用来识别矩阵或数据框中没有缺失值的行,若每行都包含完整的实例,则返回TRUE的逻辑向量,若每行有一个或多个缺失值,则返回FALSE;
df1 <- test[complete.cases(df1),]
//可以去掉含有缺失值的行
7.分组求和
a=data.frame(customer=c('a','b','a','m','a','b'),consumption=1:6)
a
customer consumption
1 a 1
2 b 2
3 a 3
4 m 4
5 a 5
6 b 6
tapply(a$consumption,a$customer,sum)
a b m
9 8 4
tapply(a$consumption,a$customer,length)
a b m
3 2 1
利用两列的关系进行分组求和
a=data.frame(customer=c('a','b','a','m','a','b'),consumption=1:6,groups=c('A','B','A','B','A','B'))
aggregate(a$consumption, list(a$customer,a$groups), sum)
Group.1 Group.2 x
1 a A 9
2 b B 8
3 m B 4
8.最大值
(1)找最大值:max()
(2)找最大值的下标:which.max()
9.数据中心化(标准化,最小-最大规范化)
即就是将数据映射到[0,1]之间:
公式: x-min(x) / max(x)-min(x)
for(i in 1:ncol){
df1[,i]=(df1[,i]-min(df1[,i]))/(max(df1[,i])-min(df1[,i]))}