<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'><p abp="4849">Hello to everyone,</p><p abp="4850"> </p><p abp="4851">Let's consider, just by way of example, the following date and data table:</p><p abp="4852"> </p><p abp="4853"><font face="Courier New,sans-serif" size="2" style="font-size: 10pt;" abp="4921">opening <- as.Date("1990-01-01")<br abp="4922">DT <- data.table(ID=c(1,2,3),<br abp="4923">    start=c("1985-01-01","1993-07-15","1993-05-17"),<br abp="4924">    end=c("1992-05-01","1997-02-25","2002-01-01"),<br abp="4925">    value=c(7.8, 3.2, 20.0))</font></p><p abp="4858"> </p><p abp="4859">FIRST QUESTION: </p><p abp="4859"> </p><p abp="4859">If I execute:</p><p abp="4859"> </p><p abp="4859"><font face="Courier New,sans-serif" size="2" style="font-size: 10pt;" abp="4926">DTNEW <- DT[ , { <br abp="4927">   if (all(start <= opening)){ <br abp="4928">     result <- list(start, end, t.dif= unclass(round(difftime(end, start)/365.25,1)), value) <br abp="4929">     } else { <br abp="4930">     result <- list(start, end, t.dif= 20, value)<br abp="4931">     } <br abp="4932">   result}, by=ID] </font></p><p abp="4859"><font face="Courier New" size="2"></font> </p><p abp="4859"><font face="Calibri" abp="4933">Why can I not keep the column names?</font></p><p abp="4859"><font face="Courier New,sans-serif" abp="4934">   ID                       t.dif     <br abp="4935">1:  1 1985-01-01 1992-05-01   7.3  7.8<br abp="4936">2:  2 1993-07-15 1997-02-25  20.0  3.2<br abp="4937">3:  3 1993-05-17 2002-01-01  20.0 20.0</font><br abp="4938"></p><p abp="4859">SECOND QUESTION:</p><p abp="4859"> </p><p abp="4859">I would want to remove rows where <font face="Courier New,sans-serif">t.dif=value</font> in the final result. Then, I tried:</p><p abp="4859"> </p><p abp="4859"><font face="Courier New" size="2" abp="4939">DTNEW <- DT[ , { <br abp="4940"></font><font face="Courier New" size="2" abp="4941">   if (all(start <= opening)){ <br abp="4942">     result <- list(start, end,  t.dif= unclass(round(difftime(end, start)/365.25,1)), value) <br abp="4943">     } else { <br abp="4944">     result <- list(start, end,  t.dif= 20, value)<br abp="4945">     } <br abp="4946">   result[!(t.dif == value)]}, by=ID] </font></p><p abp="4859"> </p><p abp="4859">But R does not find the variable<font face="Courier New,sans-serif" abp="4947"> t.dif</font> !!</p><p abp="4859"> </p><p abp="4859">Thank you for your time to all of the members of the list!!</p><p abp="4859"> </p><p abp="4859"> </p><p abp="4859"> </p><p abp="4859"> </p><p abp="4859"> </p><p abp="4859"> </p><p abp="4859"> </p><p abp="4859"> </p><p abp="4859"> </p><p abp="4859"> </p><p abp="4859"> </p><p abp="4859"> </p><p abp="4859"> </p><p abp="4859"> </p>                                           </div></body>
</html>