在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中具有指定变量的引用列的主要内容,如果未能解决你的问题,请参考以下文章
在函数中通过引用向 data.table 添加新列并不总是有效
如何基于 data.table 中的分类变量以编程方式创建二进制列?