【问题标题】:How to plot for a special data frame using R如何使用 R 绘制特殊数据框
【发布时间】:2014-09-29 20:00:56
【问题描述】:

原始数据框如下所示:

status[1:15,]

     time                   dt_5
1   2014-07-31 17:00:01.0    0
2   2014-07-31 17:00:01.2    0
3   2014-07-31 17:00:01.4    1
4   2014-07-31 17:00:01.5    1
5   2014-07-31 17:00:02.2    1
6   2014-07-31 17:00:02.5    1
7   2014-07-31 17:00:03.0    1
8   2014-07-31 17:00:04.0    1
9   2014-07-31 17:00:04.0    1
10  2014-07-31 17:00:05.0    1
11  2014-07-31 17:00:09.0    1
12  2014-07-31 17:00:10.0    1
13  2014-07-31 17:00:10.2    1
14  2014-07-31 17:00:11.2    1
15  2014-07-31 17:00:11.5    1

为了按 3 分钟间隔将其分成几组,我使用了 George Dontas 的解决方案using plyr to group 并计算了每组中值“1”的百分比。

percentage.occupied <- function(x) (NROW(subset(x,dt_5==0)))/(NROW(x))

splitbytime <- dlply(selectstatus327, .(cut(time,"3 mins")),percentage.occupied)

然后我得到了结果:

> splitbytime
$`2014-07-31 17:00:00`
[1] 0.2857143

$`2014-07-31 17:03:00`
[1] 0.2835821

$`2014-07-31 17:06:00`
[1] 0.6044304

$`2014-07-31 17:09:00`
[1] 0.5735294

$`2014-07-31 17:12:00`
[1] 0.8811475

$`2014-07-31 17:15:00`
[1] 0.599359

$`2014-07-31 17:18:00`
[1] 0.8021201

$`2014-07-31 17:21:00`
[1] 0.7956522

$`2014-07-31 17:24:00`
[1] 0.7022059

$`2014-07-31 17:27:00`
[1] 0.6568266

$`2014-07-31 17:30:00`
[1] 0.8390805

$`2014-07-31 17:33:00`
[1] 0.3838863

$`2014-07-31 17:36:00`
[1] 0.7686567

$`2014-07-31 17:39:00`
[1] 0.6580311

$`2014-07-31 17:42:00`
[1] 0.6923077

$`2014-07-31 17:45:00`
[1] 0.5813008

$`2014-07-31 17:48:00`
[1] 0.9066148

$`2014-07-31 17:51:00`
[1] 0.59375

$`2014-07-31 17:54:00`
[1] 0.9487179

$`2014-07-31 17:57:00`
[1] 0.7325581

我的目标是按时间(每 3 分钟)绘制值“1”的百分比,但我不知道如何使用奇怪的数据框进行绘制(x_axis 是时间,y_axis 是百分比)。我是个新手(=^ ^=)

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    您现在有一个列表,但没有一个数据框。 (如果您想要一个数据框,那么使用 ddply 应该会成功。)您可以使用 names(splitbytime) 至少将“时间”恢复为字符向量。原始日期时间值可以重构为:

      as.POSIXct( names(splitbytime) )
    

    这些值可以被提取为一个数字向量,只需:

     unlist( splitbytime )
    

    那就试试吧:

      plot( x= as.POSIXct( names(splitbytime) ), 
            y= unlist( splitbytime ) ) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-08
      • 1970-01-01
      • 1970-01-01
      • 2021-02-10
      • 2016-04-04
      • 2020-06-30
      • 1970-01-01
      • 2018-11-06
      相关资源
      最近更新 更多