R 从数据帧中删除、删除、终止所有因子级别

R 从数据帧中删除、删除、终止所有因子级别,r,factors,levels,R,Factors,Levels,以mtcars为例,创建一个新变量: mtcars$name <- rownames(mtcars) mtcars[,] <- lapply(mtcars, factor) mtcars[,] <- lapply(mtcars, as.numeric) 如何将因子转换回正确的格式。(char、log、num…)可能type.convert会满足您的需要。它将其输入强制为可以表示它的最基本的数据类型。因此,它会将包含可以表示为整数的数字的字符列转换为整数列 mtcars$na

以mtcars为例,创建一个新变量:

mtcars$name <-  rownames(mtcars)
mtcars[,] <- lapply(mtcars, factor)
mtcars[,] <- lapply(mtcars, as.numeric)

如何将因子转换回正确的格式。(char、log、num…)可能
type.convert
会满足您的需要。它将其输入强制为可以表示它的最基本的数据类型。因此,它会将包含可以表示为整数的数字的字符列转换为整数列

mtcars$name <-  rownames(mtcars)
str(mtcars)
# 'data.frame': 32 obs. of  12 variables:
# $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
# $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
# $ disp: num  160 160 108 258 360 ...
# $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
# $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
# $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
# $ qsec: num  16.5 17 18.6 19.4 17 ...
# $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
# $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
# $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
# $ carb: num  4 4 1 1 2 1 4 2 2 4 ...
# $ name: chr  "Mazda RX4" "Mazda RX4 Wag" "Datsun 710" "Hornet 4 Drive" ...

mtcars[,] <- lapply(mtcars, factor)
str(mtcars)
# 'data.frame': 32 obs. of  12 variables:
# $ mpg : Factor w/ 25 levels "10.4","13.3",..: 16 16 19 17 13 12 3 20 19 14 ...
# $ cyl : Factor w/ 3 levels "4","6","8": 2 2 1 2 3 2 3 1 1 2 ...
# $ disp: Factor w/ 27 levels "71.1","75.7",..: 13 13 6 16 23 15 23 12 10 14 ...
# $ hp  : Factor w/ 22 levels "52","62","65",..: 11 11 6 11 15 9 20 2 7 13 ...
# $ drat: Factor w/ 22 levels "2.76","2.93",..: 16 16 15 5 6 1 7 11 17 17 ...
# $ wt  : Factor w/ 29 levels "1.513","1.615",..: 9 12 7 16 18 19 21 15 13 18 ...
# $ qsec: Factor w/ 30 levels "14.5","14.6",..: 6 10 22 24 10 29 5 27 30 19 ...
# $ vs  : Factor w/ 2 levels "0","1": 1 1 2 2 1 2 1 2 2 2 ...
# $ am  : Factor w/ 2 levels "0","1": 2 2 2 1 1 1 1 1 1 1 ...
# $ gear: Factor w/ 3 levels "3","4","5": 2 2 2 1 1 1 1 2 2 2 ...
# $ carb: Factor w/ 6 levels "1","2","3","4",..: 4 4 1 1 2 1 4 2 2 4 ...
# $ name: Factor w/ 32 levels "AMC Javelin",..: 18 19 5 13 14 31 7 21 20 22 ...


mtcars[,] <- lapply(mtcars, function(x) type.convert(as.character(x), as.is = TRUE))
str(mtcars)
#'data.frame':  32 obs. of  12 variables:
#$ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
#$ cyl : int  6 6 4 6 8 6 8 4 4 6 ...
#$ disp: num  160 160 108 258 360 ...
#$ hp  : int  110 110 93 110 175 105 245 62 95 123 ...
#$ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
#$ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
#$ qsec: num  16.5 17 18.6 19.4 17 ...
#$ vs  : int  0 0 1 1 0 1 0 1 1 1 ...
#$ am  : int  1 1 1 0 0 0 0 0 0 0 ...
#$ gear: int  4 4 4 3 3 3 3 4 4 4 ...
#$ carb: int  4 4 1 1 2 1 4 2 2 4 ...
#$ name: chr  "Mazda RX4" "Mazda RX4 Wag" "Datsun 710" "Hornet 4 Drive" ...

mtcars$name尝试使用
x=factor(2:11)
更正它,但对问题的评论是类似的,如果所有col都是num放在第一位,这就可以了。如本例所示。您可以在“警告”下的帮助(“因子”)
中找到。R常见问题解答7.10:这正是重复问题所解决的问题。确定哪些列是因子,然后只对这些列应用转换。这样它们就不会有问题。因为所有列现在都是因子,所以它们希望将它们全部转换回数值。我不清楚这个问题???我想做我想做的事是不可能的。我认为因子级别是添加到类型中的东西(比如num、char…)。但这些因素是自己的类型。R怎么知道什么时候离开因子,什么是最初的num,什么是char。
df <- data.frame(x = factor(1:10)
                 ,y = factor(1:10))

str(df)

df[,] <- lapply(df, function(x) {as.numeric(as.character(x))})

str(df)
'data.frame':   10 obs. of  2 variables:
$ x: num  1 2 3 4 5 6 7 8 9 10
$ y: num  1 2 3 4 5 6 7 8 9 10
mtcars$name <-  rownames(mtcars)
str(mtcars)
# 'data.frame': 32 obs. of  12 variables:
# $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
# $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
# $ disp: num  160 160 108 258 360 ...
# $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
# $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
# $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
# $ qsec: num  16.5 17 18.6 19.4 17 ...
# $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
# $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
# $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
# $ carb: num  4 4 1 1 2 1 4 2 2 4 ...
# $ name: chr  "Mazda RX4" "Mazda RX4 Wag" "Datsun 710" "Hornet 4 Drive" ...

mtcars[,] <- lapply(mtcars, factor)
str(mtcars)
# 'data.frame': 32 obs. of  12 variables:
# $ mpg : Factor w/ 25 levels "10.4","13.3",..: 16 16 19 17 13 12 3 20 19 14 ...
# $ cyl : Factor w/ 3 levels "4","6","8": 2 2 1 2 3 2 3 1 1 2 ...
# $ disp: Factor w/ 27 levels "71.1","75.7",..: 13 13 6 16 23 15 23 12 10 14 ...
# $ hp  : Factor w/ 22 levels "52","62","65",..: 11 11 6 11 15 9 20 2 7 13 ...
# $ drat: Factor w/ 22 levels "2.76","2.93",..: 16 16 15 5 6 1 7 11 17 17 ...
# $ wt  : Factor w/ 29 levels "1.513","1.615",..: 9 12 7 16 18 19 21 15 13 18 ...
# $ qsec: Factor w/ 30 levels "14.5","14.6",..: 6 10 22 24 10 29 5 27 30 19 ...
# $ vs  : Factor w/ 2 levels "0","1": 1 1 2 2 1 2 1 2 2 2 ...
# $ am  : Factor w/ 2 levels "0","1": 2 2 2 1 1 1 1 1 1 1 ...
# $ gear: Factor w/ 3 levels "3","4","5": 2 2 2 1 1 1 1 2 2 2 ...
# $ carb: Factor w/ 6 levels "1","2","3","4",..: 4 4 1 1 2 1 4 2 2 4 ...
# $ name: Factor w/ 32 levels "AMC Javelin",..: 18 19 5 13 14 31 7 21 20 22 ...


mtcars[,] <- lapply(mtcars, function(x) type.convert(as.character(x), as.is = TRUE))
str(mtcars)
#'data.frame':  32 obs. of  12 variables:
#$ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
#$ cyl : int  6 6 4 6 8 6 8 4 4 6 ...
#$ disp: num  160 160 108 258 360 ...
#$ hp  : int  110 110 93 110 175 105 245 62 95 123 ...
#$ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
#$ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
#$ qsec: num  16.5 17 18.6 19.4 17 ...
#$ vs  : int  0 0 1 1 0 1 0 1 1 1 ...
#$ am  : int  1 1 1 0 0 0 0 0 0 0 ...
#$ gear: int  4 4 4 3 3 3 3 4 4 4 ...
#$ carb: int  4 4 1 1 2 1 4 2 2 4 ...
#$ name: chr  "Mazda RX4" "Mazda RX4 Wag" "Datsun 710" "Hornet 4 Drive" ...