在data.table中具有指定变量的引用列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在data.table中具有指定变量的引用列相关的知识,希望对你有一定的参考价值。

我想将数据表中的列从因子转换为数值,但是我正在使用“字典”(列表),因此我希望能够通过“字典”引用列变量:

#my "dictionary"
outcomes <- list("heart attack"="Hospital 30-Day Death (Mortality) Rates from Heart Attack",
               "heart failure"="Number of Patients - Hospital 30-Day Death (Mortality) Rates from Heart Failure",
               "pneumonia"="Number of Patients - Hospital 30-Day Death (Mortality) Rates from Pneumonia")
#named variable
outcome <- outcomes[["heart attack"]]

#conversion function
as.numeric.factor <- function(x) {as.numeric(levels(x))[x]}

#convert my data table column from factor to numeric
DT[, outcome := as.numeric.factor(outcome)]

DT[, outcome := as.numeric.factor(outcome)]理想情况下我想做什么,但我知道我不能只在那里贴一个命名变量outcome,希望数据表知道我指的是具有outcome值的列。对不起,我对数据表很新,我对引用列时如何处理命名变量感到有点困惑。

答案

使用tidyverse方法:

library(tidyverse)
Your_df_mod <- Your_df %>% 
    mutate_at(.vars=outcome,.funs=funs(as.numeric(.)))
另一答案

你可以试试这个:

library(data.table)

DT <- data.table(mtcars)[, mpg := as.factor(mpg)]
class(DT$mpg)
# [1] "factor"

as.numeric.factor <- function(x) {as.numeric(levels(x))[x]}
outcome <- "mpg"
# Reference column by assigned variable
DT[, (outcome) := as.numeric.factor(get(outcome))]
class(DT$mpg)
# [1] "numeric" 

以上是关于在data.table中具有指定变量的引用列的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在 i 中自我引用 data.table

在函数中通过引用向 data.table 添加新列并不总是有效

如何基于 data.table 中的分类变量以编程方式创建二进制列?

通过最大化 R data.table 中增加虚拟变量(列)分组的流行度来创建 CDF

data.table 中的行条件列操作

使用不同方式对具有数字索引的data.table列进行子集化时的结果不同