gpt4 book ai didi

r - 使用 as.numeric(levels(f))[f] 将数据框中的因子子集转换为数值

转载 作者:行者123 更新时间:2023-12-01 10:03:48 25 4
gpt4 key购买 nike

我有一个包含 100 个变量的数据框,我想要其中的一个子集,比如 dataframename[,30:50] 被转换成它们的原始数值 (1,2,3,4,5)。

我知道当我转换一个因子时我应该使用 as.numeric(levels(f))[f],但是我只能在我一次转换一个因子时才能做到这一点.我想一次全部转换。

这行不通:

as.numeric(levels(dataframename[,30:50]))[dataframename[,30:50]]  

这也不会:

sapply(dataframename[,30:50],as.numeric(levels(dataframename[,30:50]))    
[dataframename[,30:50]]

我应该阅读任何想法或资料吗?

最佳答案

这是一个较小的例子,但这个想法应该成立。您可以使用 lapply 将转换应用于数据框的每一列,然后直接替换这些列。

# make example data
dat <- as.data.frame(lapply(as.data.frame(matrix(seq(2*3), ncol = 3)), factor))

factorconvert <- function(f){as.numeric(levels(f))[f]}
dat[, 2:3] <- lapply(dat[, 2:3], factorconvert)
dat
# V1 V2 V3
#1 1 3 5
#2 2 4 6
#str(dat)
#'data.frame': 2 obs. of 3 variables:
# $ V1: Factor w/ 2 levels "1","2": 1 2
# $ V2: num 3 4
# $ V3: num 5 6

关于r - 使用 as.numeric(levels(f))[f] 将数据框中的因子子集转换为数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12868122/

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