实验一 R 语言数据结构、数据导入与数据处理
实验二 基本数据处理
实验三 数据可视化
实验四 数据分析
实验五 综合应用
实验数据下载
1. item_feature1 数据集字段
date | 日期 | item_id | 商品ID |
cate_id | 仓库ID | cate_level_id | 仓库级别ID |
brand_id | 品牌ID | supplier_id | 供应商ID |
pv_ipv | 浏览次数 | cart_uv | 加购人次 |
collect_uv | 收藏人次 | cart_ipv | 被加购次数 |
提示:以下是本篇文章正文内容
1.将 item_feature1.csv读入存储到df中;并给df的列分别命名为:date 、item_id 、cate_id、cate_level_id 、brand_id 、supplier_id 、pv_ipv 、cart_uv 、collect_uv 和 cart_ipv。
# 读取数据存储到df中
df <-
read.csv(
"R\\data\\ex2\\item_feature1.csv"
)
# 查看原始变量名
names(df)
## [1] "X20150628" "X300" "X36" "X4" "X657" "X294"
## [7] "X33" "X19" "X1" "X1.1"
# 重命名
names(df)[1:10] <- c(
"date",
"item_id",
"cate_id",
"cate_level_id",
"brand_id",
"supplier_id",
"pv_ipv",
"cart_uv",
"collect_uv",
"cart_ipv"
)
# 查看修改后的变量名
names(df)
## [1] "date" "item_id" "cate_id" "cate_level_id"
## [5] "brand_id" "supplier_id" "pv_ipv" "cart_uv"
## [9] "collect_uv" "cart_ipv"
2.为 df 中的 cart_uv重新编码并将新变量命名为recode,将小于5000的归为less,将大于等于5000小于15000的归为common,其他的归为 many;查看尾部的 10 条数据。
# cart_uv 重新编码并将新变量命名为 recode
df$recode[df$cart_uv < 5000] <- "less"
df$recode[df$cart_uv >= 5000 & df$cart_uv < 15000] <- "common"
df$recode[df$cart_uv >= 15000] <- "many"
# 尾部10条数据
tail(df, 10)
3.查看 df 中是否有缺失值;如有缺失值,删除df中所有含缺失值的行。
# 含有缺失值的行数
sum(rowSums(is.na(df)) > 0)
## [1] 2
# 删除含缺失值的行
df <- na.omit(df)
# 含有缺失值的行数
sum(rowSums(is.na(df)) > 0)
## [1] 0
# df样本的行数
nrow(df)
## [1] 230352
4.将 df 中的 date 字段转换成日期类型,如:2015-02-13。
# date数据类型
class(df$date)
## [1] "integer"
# 转换为字符型
df$date <- as.character(df$date)
# date数据类型
class(df$date)
## [1] "character"
# 转换为日期类型
df$date <- as.Date(df$date, "%Y%m%d")
5.将 df 按照 date字段升序排列,另存为 df_asc ;并查看前10条数据。
# 按照 date 字段升序排列
df_asc <- df[order(df$date), ]
# 前10条数据
head(df_asc, 10)
6.将 df 按照 date字段升序和 item_id 降序排序,另存在df1中;并查看前 5条数据。
# 按照 date 字段升序和 item_id 降序排序
df1 <- df[order(df$date, -df$item_id), ]
# 前 5条数据
head(df1, 5)
1.从 df 中选取date、item_id、cate_id、cart_uv、recode、collect_uv 和cart_ipv 字段另存为 df1;剔除 df1 中的 cart_ipv 字段另存为 df2;从 df1 中选取 item_id大于500的并且 recode 为 less 的数据另存为 df3。
# df1
df1 <-
df[c("date",
"item_id",
"cate_id",
"cart_uv",
"recode",
"collect_uv",
"cart_ipv")]
# df2
df2 <- df1[!names(df1) %in% c("cart_ipv")]
# df3
df3 <- df1[df1$item_id > 500 & df1$recode == "less", ]
2.从 df 中选取 date 为 2015-02-14,item_id为300,并保留date到 supplier_id其间的所有列,另存为 df_sub。
df_sub <-
subset(df, date == "2015-02-14" &
item_id == 300, select = date:supplier_id)
df_sub
## date item_id cate_id cate_level_id brand_id supplier_id
## 432 2015-02-14 300 36 4 657 294
3.从 df 中无放回的随机抽取500条样本,另存为df4;查看样本的维度和数据的头部数据。
# df4
df4 <- df[sample(1:nrow(df), 500, replace = FALSE), ]
# 样本维度
dim(df4)
## [1] 500 11
# 头部数据
head(df4)
4.从 df1 中选取列从item_id到cate_id的数据,另存为df1_temp,然后与 df按照 item_id 合并存为 df5。
# df1_temp
df1_temp <- subset(df1, select = item_id:cate_id)
# df5
df5 <- merge(df1_temp, df, by = "item_id")
5.从 df1 中利用 sql 的方法选取 item_id 为 300 的数据,另存为 df6 中。
# install.packages("sqldf")
library(sqldf)
df6 <- sqldf("select * from df1 where item_id=300")
6.从 df2 中有放回的随机取出与df6一样多的数据条数做为df_tem,然后与 df6按列(横向)合并,另存为 df7。
# df_tem
df_tem <- df2[sample(1:nrow(df2), nrow(df6), replace = TRUE), ]
# 数据维度
dim(df_tem)
## [1] 436 6
# df_tem、df6横向合并
df7 <- cbind(df_tem, df6)
# 数据维度
dim(df7)
## [1] 436 13
7.从 df 中选取date、item_id、cate_id和cart_ipv另存为feature,并将 feature按日期升序排列,取出 feature 中唯一的 cate_id。
# feature
feature <- df[c("date", "item_id", "cate_id", "cart_ipv")]
# 按日期升序排列
feature <- df[order(df$date), ]
# algae1样本行数
nrow(algae1)
## [1] 184
# 取出 feature 中唯一的 cate_id
unique(feature$cate_id)
## [1] 36 35 9 17 7 21 18 13 32 39 30 37 4 33 22 26 19 14 16 20 11 25 24 23 10
## [26] 5 15 28