gpt4 book ai didi

r - 如何在 R 中获取多个向量并重新编码它们的数据类型?

转载 作者:行者123 更新时间:2023-12-04 16:37:32 25 4
gpt4 key购买 nike

我正在寻找一种优雅的方法来更改 R 中的多个向量的数据类型。

我正在使用一个教育数据集:426 名学生对八个多项选择题的回答(1 = 正确,0 = 不正确),加上一列指示哪个讲师 (1, 2, or 3) 教授他们的类(class)。

就目前而言,我的数据位于 data.df 中。 , 像这样:

    str(data.df)
'data.frame': 426 obs. of 9 variables:
$ ques01: int 1 1 1 1 1 1 0 0 0 1 ...
$ ques02: int 0 0 1 1 1 1 1 1 1 1 ...
$ ques03: int 0 0 1 1 0 0 1 1 0 1 ...
$ ques04: int 1 0 1 1 1 1 1 1 1 1 ...
$ ques05: int 0 0 0 0 1 0 0 0 0 0 ...
$ ques06: int 1 0 1 1 0 1 1 1 1 1 ...
$ ques07: int 0 0 1 1 0 1 1 0 0 1 ...
$ ques08: int 0 0 1 1 1 0 1 1 0 1 ...
$ inst : num 1 1 1 1 1 1 1 1 1 1 ...

但是那些 ques0x值不是 真的整数。相反,我认为最好让 R 将它们视为实验因素。 “inst”值也是如此。

我很想把所有这些 int s 和 num转入 factors
理想情况下,一个优雅的解决方案应该产生一个数据框——我称之为 factorData.df ——看起来像这样:
    str(factorData.df)
'data.frame': 426 obs. of 9 variables:
$ ques01: Factor w/ 2 levels "0","1": 2 2 2 2 2 2 1 1 1 2 ...
$ ques02: Factor w/ 2 levels "0","1": 1 1 2 2 2 2 2 2 2 2 ...
$ ques03: Factor w/ 2 levels "0","1": 1 1 2 2 1 1 2 2 1 2 ...
$ ques04: Factor w/ 2 levels "0","1": 2 1 2 2 2 2 2 2 2 2 ...
$ ques05: Factor w/ 2 levels "0","1": 1 1 1 1 2 1 1 1 1 1 ...
$ ques06: Factor w/ 2 levels "0","1": 2 1 2 2 1 2 2 2 2 2 ...
$ ques07: Factor w/ 2 levels "0","1": 1 1 2 2 1 2 2 1 1 2 ...
$ ques08: Factor w/ 2 levels "0","1": 1 1 2 2 2 1 2 2 1 2 ...
$ inst : Factor w/ 3 levels "1","2","3": 1 1 1 1 1 1 1 1 1 1 ...

我相当肯定,无论你们想出什么解决方案,它都应该很容易推广到需要重新分类的任意 n 个变量,并且适用于最常见的转换( int -> factornum -> int , 例如)。

无论你们生成什么解决方案,它都是 绑定(bind)比我更优雅

因为我当前的笨拙代码只有 9 个单独的 factor()语句,每个变量一个,像这样

因子数据.df$ques01

我是 R、编程和 stackoverflow 的新手。请温柔,并提前感谢您的帮助!

最佳答案

This was also answered in R-Help.

我想有更好的方法可以做到这一点,但这里有两个选择:

# use a sample data set
> str(cars)
'data.frame': 50 obs. of 2 variables:
$ speed: num 4 4 7 7 8 9 10 10 10 11 ...
$ dist : num 2 10 4 22 16 10 18 26 34 17 ...
> data.df <- cars

您可以使用 lapply :
> data.df <- data.frame(lapply(data.df, factor))

for陈述:
> for(i in 1:ncol(data.df)) data.df[,i] <- as.factor(data.df[,i])

无论哪种情况,您最终都会得到您想要的:
> str(data.df)
'data.frame': 50 obs. of 2 variables:
$ speed: Factor w/ 19 levels "4","7","8","9",..: 1 1 2 2 3 4 5 5 5 6 ...
$ dist : Factor w/ 35 levels "2","4","10","14",..: 1 3 2 9 5 3 7 11 14 6 ...

关于r - 如何在 R 中获取多个向量并重新编码它们的数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1489199/

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