【R语言】实验二 基本数据处理

系列文章目录

实验一 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. 变量创建、变量重编码、缺失值、日期值处理,数据类型转化,数据排序。
  2. 数据集的合并,选取子集,使用 SQL 操作数据框,数据的整合与重构。
  3. 控制流:条件与循环。
  4. 用户自编函数。

二、实验内容

题目1

  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 。
  2. 为 df 中的 cart_uv 重新编码并将新变量命名为 recode,将小于 5000 的归为less,将大于等于 5000 小于 15000 的归为 common,其他的归为 many;查看尾部的 10 条数据。
  3. 查看 df 中是否有缺失值;如有缺失值,删除 df 中所有含缺失值的行。
  4. 将 df 中的 date 字段转换成日期类型,如:2015-02-13。
  5. 将 df 按照 date 字段升序排列,另存为 df_asc;并查看前 10 条数据。
  6. 将 df 按照 date 字段升序和 item_id 降序排序,另存在 df1 中;并查看前 5条数据。

题目2

  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。
  2. 从 df 中选取 date 为 2015-02-14,item_id 为 300,并保留 date 到 supplier_id其间的所有列,另存为 df_sub。
  3. 从 df 中无放回的随机抽取 500 条样本,另存为 df4;查看样本的维度和数据的头部数据。
  4. 从 df1 中选取列从 item_id 到 cate_id 的数据,另存为df1_temp,然后与 df按照 item_id 合并存为 df5。
  5. 从 df1 中利用 sql 的方法选取 item_id 为 300 的数据,另存为 df6 中。
  6. 从 df2 中有放回的随机取出与 df6 一样多的数据条数做为df_tem,然后与 df6按列(横向)合并,另存为 df7。
  7. 从 df 中选取 date 、item_id、cate_id 和 cart_ipv 另存为 feature,并将 feature按日期升序排列,取出 feature 中唯一的 cate_id(去重即可)。

三、实现过程与实验结果

题目1

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)

题目2

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

四、总结

以上就是全部内容。

你可能感兴趣的:(R语言,r语言)