对数据表中多个指定列进行操作

问题描述 投票:0回答:2

假设我有一个包含一堆列的数据表。其中许多列都采用奇怪的 Excel 日期格式,因此它们看起来像这样:47619

我可以使用以下代码将列正确转换为正常格式:

dt[, old_date:= as.Date(old_date, origin = "1899-12-30")]

我可以重复或添加到这一行,对其他列执行相同的操作。但同时对所有指定列执行此操作的最佳方法是什么?我对使用 apply 函数不太有经验,但我认为这可能是一个起点?

r data.table apply variable-assignment
2个回答
3
投票

一个选项是在

.SDcols
中指定感兴趣的列,然后循环
Subset of Data.table
(
.SD
),进行处理,然后将 (
:=
) 输出分配回列

nm1 <- names(dt)[1:5] # change here
dt[, (nm1) := lapply(.SD, as.Date, origin = "1899-12-30"), .SDcols = nm1]

0
投票

如果我们一步需要这个,我们可以做

dt[, (names(dt)[1:5]) := lapply(.SD, as.Date, origin="1899-12-30"), .SDcols=1:5]

其中

1:5
表示要更改的假定列。

© www.soinside.com 2019 - 2024. All rights reserved.