gpt4 book ai didi

r - 使用另一个引用数据框更改数据框中的变量类别

转载 作者:行者123 更新时间:2023-12-04 20:33:39 26 4
gpt4 key购买 nike

我正在寻找某种方法来通过使用另一个数据框的引用来更改一个数据框中的变量类,该数据框具有每个变量的类信息。

我有一个包含大约 150 个变量的数据。所有变量都是字符格式。现在我想根据其类型更改每个变量的类。为此,我们创建了一个单独的数据框,其中包含每个变量的类信息。让我用一个示例数据框来解释。

将我的原始数据框视为具有 5 个变量的 df -

df <- data.frame(A="a",B="1",C="111111",D="d",E="e")

现在我们有另一个数据框“variable_info”,它只包含 2 个变量,一个“variable_name”和另一个“variable_class”。
variable_info <- data.frame(variable_name=c("A","B","C","D","E"),variable_class=c("character","integer","numeric","character","character"))

现在使用 variable_info 数据框,我想更改 df 中每个变量的类,以便它们的类在“variable_info$variable_class”中指定,将变量名与“variable_info$variable_name”链接

我们如何为数据框执行此操作?在data.table中这样做会好吗?我们如何在 data.table 中做到这一点?

谢谢!!

普拉萨德

最佳答案

你可以这样试试:

确保两个表的顺序相同:

variable_info <- variable_info[match(variable_info$variable_name, names(df)),]

创建函数调用列表:
funs <- sapply(paste0("as.", variable_info$variable_class), match.fun)

然后将它们映射到每一列:
df[] <- Map(function(dd, f) f(as.character(dd)), df, funs)

data.table你可以用几乎相同的方式来做,除了你用以下方式替换最后一行:
library(data.table)
dt <- as.data.table(df) # or use setDT(df)
dt[, names(dt) := Map(function(dd, f) f(as.character(dd)), dt, funs)]

关于r - 使用另一个引用数据框更改数据框中的变量类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40304448/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com