如何计算R中的列和,然后使用data.table库绘制它

如何计算R中的列和,然后使用data.table库绘制它,r,data.table,data-manipulation,R,Data.table,Data Manipulation,因此,我的第一份工作是数据分析师,但我的老板希望我使用data.table软件包,我对它有一些问题 我的数据集是关于电子商务商店的总购买量和退货量(客户退货量)。我想在条形图中显示每个产品返回了多少项,表示为product name(我知道列名中有空格有点奇怪,我稍后会更改),因此我的代码如下: library(shiny) library(ggplot2) library(data.table) library(tidyverse) mainTable <- fread('return

因此,我的第一份工作是数据分析师,但我的老板希望我使用
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`)) 
库(闪亮)
图书馆(GG2)
库(数据表)
图书馆(tidyverse)

mainTable这里有两个问题:

  • 由于您要求的是
    sum(essentialReturnData$`Return quantity`)
    ,这是对表的不同实例的调用,因此sum将通过
    分组忽略
    。改为使用
    sum(`returngrouping`)
    ,因为它引用表的同一实例中的列

  • table(returnsByProductName$`Product name`)
    是产品名称的频率表,但是
    returnsByProductName
    每个名称只有一行。您根本没有使用
    totalReturns
    !使用条形图(returnsByProductName$totalReturns,names.arg=returnsByProductName$`Product name`)

  • 考虑到您有多少产品,您将很难以一种好的方式在轴上匹配所有名称。您可以添加一个
    las=2
    参数,该参数被传递到
    par()
    ,并使x轴标签垂直。但是,这么多的产品仍然会让它看起来很混乱,如果名称很长,那么它就不会为绘图本身留下太多空间,除非您将绘图大小设置为巨大。

    sum(essentialReturnData$`Return quantity`)
    忽略了
    by
    分组,因为您在表的不同实例中获取总和。使用
    sum(`Return quantity`)
    代替。谢谢!成功了!但是,关于如何提高我的视觉效果有什么想法吗?我想在x轴上显示产品名称,然后在y轴上显示返回量,当我使用
    barplot()
    函数时,它返回一个非常糟糕的绘图。我不知道为什么会关闭它。状态消息说问题不可复制,或者是由拼写错误引起的,这两个都不是真的。非常感谢您的回答,也感谢您的解释!现在一切都有意义了