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 48.最大值 (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]))}