还在学习这个很棒的包data.table.我正在处理以下data.table:
demo <- data.table(id = c(1, 2, 3, 4, 5, 6), sex = c(1, 2, 1, 2, 2, 2), agef = c(43, 53, 63, 73, 83, 103))
demo:
id sex agef
1 1 43
2 2 53
3 1 63
4 2 73
5 2 83
6 2 103
Run Code Online (Sandbox Code Playgroud)
我正在尝试生成新列(age_gender band)为("F0_34","F35_44","F45_54","F55_59"........"F95_GT")和("M0_34","M35_44", "M45_54","M55_59"........"M95_GT")基于列性和agef的值,将生成它们的名称和值.我能够以一种简单的方式做到:
demo <- demo[ ,F0_34:= {ifelse((sex==2) & (agef >= 0) & (agef <= 34), 1, 0)}]
Run Code Online (Sandbox Code Playgroud)
但我正在为此寻找一个优雅的解决方案,我试图将age_band作为lapply函数中的列表传递,如下所示:
i <- list("0_34","35_44","45_54","55_59","60_64","65_69","70_74","75_79","80_84","85_89","90_94","95_GT")
demo[, paste0("F", i) := lapply(i, function(i)lapply(.SD, function(x){
l1 <- …
Run Code Online (Sandbox Code Playgroud) 我有这个data.table:
样品:
id cond date
1 A1 2012-11-19
1 A1 2013-05-09
1 A2 2014-09-05
2 B1 2015-03-05
2 B1 2015-07-06
3 A1 2015-02-05
4 B1 2012-09-26
4 B1 2015-02-05
5 B1 2012-09-26
Run Code Online (Sandbox Code Playgroud)
我想从今天的'id'和'cond'组中计算从今天开始的过期天数,所以我试图得到每组中最后一个日期和sys.date之间的天数差异.期望的输出是;
id cond date overdue
1 A1 2012-11-19 NA
1 A1 2013-05-09 832
1 A2 2014-09-05 348
2 B1 2015-03-05 NA
2 B1 2015-07-06 44
3 A1 2015-02-05 195
4 B1 2012-09-26 NA
4 B1 2015-02-05 195
5 B1 2012-09-26 1057
Run Code Online (Sandbox Code Playgroud)
我尝试通过以下代码实现此目的:
sample <- sample[ , overdue := …
Run Code Online (Sandbox Code Playgroud)