这些是我的样本数据:
dt <- data.table(id=c("a","a","a","a","b","b"), monthsinarrears=c(0,1,0,0,1,0), date=c(2013,2014,2015,2016,2014,2015))
Run Code Online (Sandbox Code Playgroud)
该表如下所示:
> dt
id monthsinarrears date
1: a 0 2013
2: a 1 2014
3: a 0 2015
4: a 0 2016
5: b 1 2014
6: b 0 2015
Run Code Online (Sandbox Code Playgroud)
现在我想创建一个名为"EverinArrears"的附加列,如果id曾经处于拖欠状态(历史上),则将分配"1",如果不是,则指定为"0".因此我想获得的输出是:
id monthsinarrears date EverinArrears
1: a 0 2013 0
2: a 1 2014 1
3: a 0 2015 1
4: a 0 2016 1
5: b 1 2014 1
6: b 0 2015 1
Run Code Online (Sandbox Code Playgroud)
请注意,贷款ID a在2013年的历史上并非拖欠(这发生在2014年),因此EverinArrears在2013年也获得0零.
我的示例data.table如下所示
启动数据
library(data.table)
x <- data.table(id = as.character(c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3)),
time = as.character(c(1,2,3,4,5,1,2,3,4,5,1,2,3,4,5)),
status = c("P", "R", "R", "R", "R", "P", "P", "P", "R", "R", "P", "P", "R", "R", "R"),
balance = c(100, 90, 80, 70, 60, 320, 300, 250, 200, 100, 40, 34, 31, 29, 10),
employment = c("Y", "Y", "Y", "N", "N", "N", "N", "N", "N", "Y", "N", "Y", "Y", "Y", "Y")
)
Run Code Online (Sandbox Code Playgroud)
目标是在状态从"P"迁移到"R"并通过"id"复制列平衡和就业中的信息.即我想使用id为"P"的最后一个时段中的数据,并覆盖id为"R"的所有下一个时段的现有信息.
因此,目标是获得此数据.表格
目标
Y <- data.table(id = as.character(c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3)),
time = as.character(c(1,2,3,4,5,1,2,3,4,5,1,2,3,4,5)),
status = c("P", "R", "R", "R", …Run Code Online (Sandbox Code Playgroud) 如何在另一个字符串中找到字符串的一部分.您可以在下面找到一些示例数据:
a <- c("23,45,24,67,91,10")
b <- c("as.01,as.23,as55,as69")
Run Code Online (Sandbox Code Playgroud)
目标是找到ain的任何子串b.因此,这应该返回TRUE,因为23存在a于其中b.我已经尝试过诸如此类的功能
charmatch
grepl
match
Run Code Online (Sandbox Code Playgroud)
但所有这些似乎都不符合我的目的.任何帮助表示赞赏!