r - 如何计算 R 中的列总和,然后使用 data.table 库绘制它
问题描述
因此,我的第一份工作是数据分析师,但是我的老板希望我使用该data.table
软件包,但我遇到了一些问题。
我的数据集是关于总购买和退货(客户退货)的电子商务商店。我想在条形图中可视化每个产品返回了多少项目,表示为Product name
(我知道列名中有空格有点奇怪,我稍后会更改它)所以我的代码如下:
library(shiny)
library(ggplot2)
library(data.table)
library(tidyverse)
mainTable <- fread('returnStats.csv')
essentialReturnData <- mainTable[,c(7,9)]
returnsByProductName <- essentialReturnData[,
.(totalReturns = sum(essentialReturnData$`Return quantity`)),
by = 'Product name']
barplot(table(returnsByProductName$`Product name`))
但是,对于下图中显示的所有 s,我只得到一个具有相同总和值的 data.table Product name
:
然后当然我有一个看起来像完全垃圾的条形图:
解决方案
这里有两点不对:
由于您要求
sum(essentialReturnData$`Return quantity`)
,这是对表的不同实例的调用,因此总和忽略了by
分组。改为使用sum(`Return grouping`)
,因为 this 指的是同一表实例中的列。table(returnsByProductName$`Product name`)
是产品名称的频率表,但returnsByProductName
每个名称只有一行。你根本没有使用totalReturns
!改为使用barplot(returnsByProductName$totalReturns, names.arg = returnsByProductName$`Product name`)
。
鉴于您拥有多少产品,您将无法以一种很好的方式将所有名称拟合到轴上。您可以执行诸如添加las = 2
参数之类的操作,该参数被传递给par()
并使 x 轴标签垂直。然而,这么多产品看起来仍然很乱,如果名称很长,那么它不会为情节本身留下太多空间,除非你让情节变得巨大。
推荐阅读
- python - python条件分组填充
- spring - Spring Boot Apache Derby 重复键值问题
- python - 尝试使用#gekko 最大化这个简单的非线性问题,但出现此错误
- python - 如何将 SymLogNorm 与 matplotlib 一起使用,但颜色条仍然呈现线性?
- api - 输入:指定的转换无效
- arrays - 在 React 中设置对象数组返回空数组
- javascript - 有人可以解释这背后的逻辑吗?为什么在'for'循环中它<12?i var 如何在数组中超过 2?
- python - 了解哪些输入在神经元网络中具有最高权重
- c++ - 为什么我不能用异步初始化向量?
- latex - 为什么 Latex 不会自动为我连字符