利用grep函数提取tianmao1的stock、stockclass两列,将其保存到stockc数据集中;
时间: 2024-04-16 14:28:46 浏览: 117
你可以使用以下代码利用`grep()`函数提取`tianmao1`数据集中的`stock`和`stockclass`两列,并将它们保存到`stockc`数据集中:
```R
stockc <- tianmao1[, grep("stock|stockclass", colnames(tianmao1))]
```
这段代码使用`grep()`函数来匹配列名中包含"stock"或"stockclass"的列,并使用索引操作符`[, ]`将这些列从`tianmao1`数据集中提取出来,然后将提取的结果保存到`stockc`数据集中。
相关问题
利用R语言实现以下功能: 从天猫网站爬取的电视销售数据(tianmaoTV.xlsx)包含商品名称、商品描述、现价、原价、月销量、库存、店铺ID、店铺名称、评分、收藏数、累计评价数、毛重、品牌、电视类型和屏幕尺寸等变量。 (1)利用grep函数提取tianmao1的stock、stockclass两列,将其保存到stockc数据集中; (2)按照不同品牌计算不同店铺的销量,并保存在bshoptop3数据框中; (3)分别绘制图体现收藏数和销量、销量和评分之间的关系; (4)筛选得出价格波动(原价和现价的差)最大的前十名商品,并保存在salestop10数据集中; (5)生成原价和现价两列数据的箱线图,查看价格分布情况; (6)该表貌似整洁,但存在冗余,尝试将其修改为整洁数据集。
以下是利用R语言实现以上功能的代码:
```
# 导入所需包
library(readxllibrary(dplyr)
library(ggplot2)
library(tidyr)
# (1) 提取stock和stock列保存到stockc中
stockc <-ianmao1[, c("stock", "class")]
# (2)照不同品牌计算不同店铺的销量,并保存在bshoptop3数据框中
bshoptop3 <- tianmao1 %>%
group_by(品牌, 店铺ID, 店铺名称) %>%
summarise(总销量 = sum(月销量)) %>%
arrange(desc(总销量)) %>%
group_by(品牌) %>%
slice_max(总销量, n = 3)
# (3) 绘制收藏数和销量、销量和评分之间的关系图
ggplot(tianmao1, aes(x = 收藏数, y = 月销量)) +
geom_point() +
xlab("收藏数") +
ylab("销量") +
ggtitle("收藏数与销量关系图")
ggplot(tianmao1, aes(x = 评分, y = 月销量)) +
geom_point() +
xlab("评分") +
ylab("销量") +
ggtitle("评分与销量关系图")
# (4) 筛选价格波动最大的前十名商品,并保存在salestop10数据集中
salestop10 <- tianmao1 %>%
mutate(价格波动 = 原价 - 现价) %>%
arrange(desc(价格波动)) %>%
head(10)
# (5) 生成原价和现价两列数据的箱线图,查看价格分布情况
prices <- tianmao1 %>%
select(原价, 现价) %>%
pivot_longer(everything(), names_to = "价格类型", values_to = "价格")
ggplot(prices, aes(x = 价格类型, y = 价格)) +
geom_boxplot() +
xlab("价格类型") +
ylab("价格") +
ggtitle("原价和现价的箱线图")
# (6) 修改为整洁数据集
tianmao_clean <- tianmao1 %>%
select(-c(商品描述, 店铺ID, 店铺名称, 毛重, 电视类型, 屏幕尺寸)) %>%
pivot_longer(cols = -c(商品名称, 品牌), names_to = "变量", values_to = "值")
```
以上代码实现了你提出的功能。其中,第6步使用了`pivot_longer`函数将表格转换为整洁数据集,每一行代表一个观测值,每一列代表一个变量,这样可以更方便地进行数据分析和可视化。
利用R语言实现以下功能: 从天猫网站爬取的电视销售数据(tianmaoTV.xlsx)包含商品名称、商品描述、现价、原价、月销量、库存、店铺ID、店铺名称、评分、收藏数、累计评价数、毛重、品牌、电视类型和屏幕尺寸共15个变量。 (1)将数据读进R并保存为tianmao1数据集; (2)提取当前价格(current_price)小于1000的所有观测,保存到数据集cplow1000; (3)在数据集tianmao1中生成一个新列,将新列命名为stockclass:当库存stock等于0 时,stockclass的值为“无货”;当库存小于100,stockclass的值为“低库存”; 当库存大于等于100时,stockclass的值为“高库存”; (4)利用grep函数提取tianmao1的stock、stockclass两列,将其保存到stockc数据集中; (5)计算每个品牌的总销量(提示:利用group_by和summarise函数),把销量前十的结果保存到brandmount数据框里,用1-2个图显示不同品牌的销量之间的差异,并说明为什么选用此种类型的图;
以下是利用R语言实现以上功能的代码:
```R
# 导入所需包
library(readxl)
library(dplyr)
library(ggplot2)
# (1) 读取数据
tianmao1 <- read_excel("tianmaoTV.xlsx")
# (2) 提取当前价格小于1000的所有观测
cplow1000 <- filter(tianmao1, current_price < 1000)
# (3) 生成stockclass变量
tianmao1 <- mutate(tianmao1, stockclass = case_when(
stock == 0 ~ "无货",
stock < 100 ~ "低库存",
stock >= 100 ~ "高库存"
))
# (4) 提取stock和stockclass列保存到stockc数据集中
stockc <- tianmao1[, c("stock", "stockclass")]
# (5) 计算每个品牌的总销量并保存前十结果到brandmount数据框
brandmount <- tianmao1 %>%
group_by(品牌) %>%
summarise(总销量 = sum(月销量)) %>%
arrange(desc(总销量)) %>%
head(10)
# 绘制销量差异图
ggplot(brandmount, aes(x = reorder(品牌, -总销量), y = 总销量)) +
geom_bar(stat = "identity") +
xlab("品牌") +
ylab("总销量") +
ggtitle("不同品牌的销量差异图") +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
```
我们选用了柱状图来展示不同品牌的销量差异,因为柱状图可以直观地比较不同品牌的销量大小,并且易于理解和比较。柱状图适用于展示离散变量(品牌)与连续变量(销量)之间的关系。通过对柱状图进行排序,可以清楚地看到销量前十的品牌,方便进行比较和分析。
阅读全文