首页 > 解决方案 > 如何根据另一列找到最小值和最大值?

问题描述

我的输入表如下所示,

    +------+------------------+
    | Name |     Datetime     | 
    +------+------------------+
    | ABC  |  26-01-2019 4:55 |  
    | ABC  |  26-01-2019 4:35 |  
    | ABC  |  26-01-2019 5:00 |  
    | XYZ  |  26-01-2019 2:50 |  
    | XYZ  |  26-01-2019 4:00 |  
    | XYZ  |  26-01-2019 4:59 | 
    +------+------------------+ 

从上表中,我想根据“名称”找到“日期时间”的最小值和最大值,同时在“数据时间”信息之间拒绝,如果该人提前或迟到使用 R Studio 被录取,则自动创建另一列,如下所示,

    +------+------------------+--------+
    | Name |     Datetime     |  Col3  |  
    +------+------------------+--------+
    | ABC  |  26-01-2019 4:35 |  Early |  
    | ABC  |  26-01-2019 5:00 |  Late  |  
    | XYZ  |  26-01-2019 2:50 |  Early |  
    | XYZ  |  26-01-2019 4:59 |  Late  |  
    +------+------------------+--------+

先感谢您。

标签: r

解决方案


这是一个基本的 R 选项,

transform(stack(data.frame(
          do.call(cbind, 
              tapply(as.POSIXct(dd$Datetime, format = '%d-%m-%Y %H:%M'), dd$Name, function(i)
                  as.character(c(min(i), max(i))))), stringsAsFactors = FALSE)), 
         col3 = c('Early', 'Late'))

#               values ind  col3
#1 2019-01-26 04:35:00 ABC Early
#2 2019-01-26 05:00:00 ABC  Late
#3 2019-01-26 02:50:00 XYZ Early
#4 2019-01-26 04:59:00 XYZ  Late

推荐阅读