首页 > 解决方案 > 绘制 R 中单列的总和

问题描述

我有一个名为:数据的示例数据集,如下所示:

                ID               TIMEDATA                     DURATION      
                A                12/18/2019 4:45:10 AM           
                A                12/18/2019 4:45:11 AM         1 sec
                A                12/18/2019 9:06:59 PM         0 sec             
                B                12/18/2019 4:14:13 AM         0 sec
                B                12/18/2019 4:14:14 AM         1 sec

我想创建列“持续时间”的总和的条形图,因为它与时间数据小时相关联。

我已经使用了这段代码,但这不起作用。

              data$TIMEDATA <- as.Date(data$TIMEDATA, format = "%m/%d/%Y %I:%M:%S %p")

               data$TIMEDATA = format(data$TIMEDATA, "%I")
               tapply(data$DURATION, data$TIMEDATA, FUN = sum)

               barplot(tapply(data$DURATION, format(data$TIMEDATA, "%I"), FUN = sum))


        dput:

         Classes ‘tbl_df’, ‘tbl’ and 'data.frame':  617195 obs. of  3                    variables:
           $ ID: Factor w/ 57 levels "","A",..: 37 37 37 37 37 43 43 43 43 43 ...
           $ TIMEDATA  : chr  "04" "04" "04" "04" ...
           $ DURATION     : num  1 1 1 0 6 1 1 1 0 1 ...

任何帮助表示赞赏。我会继续研究这个。

标签: rggplot2bar-chartduration

解决方案


如果“持续时间”是numeric它会起作用的

library(lubridate)
data$TIMEDATA <- format(mdy_hms(data$TIMEDATA), "%I")
barplot(tapply(data$DURATION, data$TIMEDATA, FUN = sum))

在此处输入图像描述

数据

data <- structure(list(ID = c("A", "A", "A", "B", "B"), 
    TIMEDATA = c("12/18/2019 4:45:10 AM", 
"12/18/2019 4:45:11 AM", "12/18/2019 9:06:59 PM", "12/18/2019 4:14:13 AM", 
"12/18/2019 4:14:14 AM"), DURATION = c(0L, 1L, 0L, 0L, 1L)),
class = "data.frame", row.names = c(NA, 
-5L))

推荐阅读