如果缺少组的最后一个值,则用POSIXct变量替换

时间:2019-05-29 15:31:24

标签: datetime replace group-by dplyr

我想将enddt变量的最后一个值替换为值“ 2019-03-31 23:59:59”。

ID  stdt                enddt               goal 
1   11/21/2018 7:11     12/31/2018 23:59    12/31/2018 23:59
1   1/21/2019 0:00      1/22/2019 5:19      1/22/2019 5:19
1   1/22/2018 5:19                          3/31/2019 23:59
2   12/17/2018 16:49    3/31/2018 21:59     3/31/2018 21:59
2   3/31/2018 22:00     12/21/2018 23:05    12/21/2018 23:05
2   12/21/2018 23:05    1/16/2019 8:32      1/16/2019 8:32

我的尝试没有用。它为每个id生成一个值(第一个enddt值)。

df <- df %>%
  group_by(ID) %>%
  mutate(goal= ifelse(is.null(last(enddt)), "2019-03-31 23:59:59", enddt)) %>%
  ungroup()

hh3$goal<- as.POSIXct(hh3$goal, origin = "1960-01-01")

我的日期/时间变量是“ POSIXct”“ POSIXt”类。也许我需要使用chron更改此变量的类??

先谢谢您。 马文

1 个答案:

答案 0 :(得分:0)

您要面对两件时髦的事情。

  1. <Root> <Header> <Id>123</Id> <OtherId>456</OtherId> <SomeValue>abc</SomeValue> </Header> <SubHeader> <SomeValue2>dfg</SomeValue2> <SomeValue3>fghj</SomeValue3> </SubHeader> <Body> <Activity> <ActivityId>321</ActivityId> <ActivityValue>hjk</ActivityValue> </Activity> <Position> <PositionId>654</PositionId> <PositionAmounts> <PositionAmount> <Amount1>10.01</Amount1> <Amount2>12.63</Amount2> </PositionAmount> <PositionAmount> <Amount1>15.11</Amount1> </PositionAmount> </PositionAmounts> </Position> </Body> </Root> 在某个日期通常会产生意外的输出。由于$.ajax({ type: 'POST', url: 'Acoes.php', data: { 'ACAO': 'CARREGA_METAS_TAGS' }, dataType: 'json', success: function(response) { //var DD = "<?php echo $Tags; ?>"; //var resultado = DD; var resultado = '<option value="HTML">HTML</option>'; for (var i = 0; response.length > i; i++) { resultado += '<option value="' + response[i].Id + '-' + response[i].TAGS + '">' + response[i].TAGS + '</option>'; } $('#MetaTAG').html(resultado).trigger('chosen:updated'); }, error: function(result) { alert("Data not found"); } }); 具有POSIXct类,因此ifelse()的新结果也应具有它。
  2. enddt语句中,您要询问1事物是否为TRUE,然后逐行进行操作并生成输出。这也可能创建意外的警告和输出。解决此问题的一种方法是创建一个帮助列,如我在下面所做的(goal)。解决此问题的另一种方法是类似ifelse(),但我认为helper列更容易理解。

看看这是否对您有帮助

missing_date

enter image description here