如何替换data.table指定行列值:用首行对应列前10字符填充
处理data.table指定行列的赋值问题
首先,你的原始data.table定义如下:
dt <- data.table(x = c("name",NA), y = c("2020-12-31T00:00:00.000+00:00",NA), z = c("2019-12-31T00:00:00.000+00:00",NA))
方法一:单独列赋值
直接定位第2行的y和z列,将第1行对应列值的前10个字符赋值过去:
# 替换第2行y列 dt[2, y := substr(dt[1, y], 1, 10)] # 替换第2行z列 dt[2, z := substr(dt[1, z], 1, 10)]
方法二:批量处理多列
利用.SDcols指定要处理的列,通过lapply批量完成赋值,更高效:
dt[2, c("y", "z") := lapply(.SD, function(col) substr(dt[1, col], 1, 10)), .SDcols = c("y", "z")]
最终结果
执行上述代码后,你的data.table会更新为:
x y z 1: name 2020-12-31 2019-12-31 2: NA 2020-12-31 2019-12-31
内容的提问来源于stack exchange,提问作者Zach Fara
相关产品推荐
相关产品推荐

