标准化列名 - 搜索一组列名,然后使用可用于新标准化列的名称
standardize column names - search for a set of column names and then use the one available for the new standardized columns
我正在准备和标准化数据。标准化列名称的一部分。我用 data.table.
我想要的是:我想创建一个新的标准化列名(自定义)并设置我的代码,以便它在原始数据中搜索特定的列名向量,如果它找到任何这些列然后用它来填写标准化的列名。
我很欣赏它可能不清楚,所以这里有一个例子。在 belwo 中,我想创建新的标准化列名称 WEIGHT
。我想在 dat
中搜索其中任何一个 (wt
、WT
、WTBL
) 的 colnames,如果找到其中一个,则将其用于新列 WEIGHT
library(data.table)
library(car)
dat <- as.data.table(mtcars)
dat[, WEIGHT := wt] #this is what we do normally - but i want to make it semiautomatic so that i search for a vector of column names and use the one that is avalble to fill in the WEIGHT columes.
dat[, WEIGHT := colnames(dat%in%c('wt','WT','WTBL'))] #this is wrong and there where i need help!
这可能有一个更简单的构造,但这里是一个尝试。 mget()
尝试按顺序获取每个值,如果找不到则返回 NULL
。
然后用第一个非NULL
值覆盖:
dat[, WEIGHT := {
m <- mget(c("WTBL","wt","WT"), ifnotfound=list(NULL))
m[!sapply(m, is.null)][1]
}]
我正在准备和标准化数据。标准化列名称的一部分。我用 data.table.
我想要的是:我想创建一个新的标准化列名(自定义)并设置我的代码,以便它在原始数据中搜索特定的列名向量,如果它找到任何这些列然后用它来填写标准化的列名。
我很欣赏它可能不清楚,所以这里有一个例子。在 belwo 中,我想创建新的标准化列名称 WEIGHT
。我想在 dat
中搜索其中任何一个 (wt
、WT
、WTBL
) 的 colnames,如果找到其中一个,则将其用于新列 WEIGHT
library(data.table)
library(car)
dat <- as.data.table(mtcars)
dat[, WEIGHT := wt] #this is what we do normally - but i want to make it semiautomatic so that i search for a vector of column names and use the one that is avalble to fill in the WEIGHT columes.
dat[, WEIGHT := colnames(dat%in%c('wt','WT','WTBL'))] #this is wrong and there where i need help!
这可能有一个更简单的构造,但这里是一个尝试。 mget()
尝试按顺序获取每个值,如果找不到则返回 NULL
。
然后用第一个非NULL
值覆盖:
dat[, WEIGHT := {
m <- mget(c("WTBL","wt","WT"), ifnotfound=list(NULL))
m[!sapply(m, is.null)][1]
}]