R语言 从一个因子中删除水平 – droplevels()函数
R编程中的droplevels()函数用于从一个因子中删除未使用的水平。
语法:
对于向量对象
droplevels(x, exclude = if(anyNA(level(x)) )NULL else NA, …)
对于数据框架对象
droplevels(x, except, exclude)
参数值:
x 代表对象,其中未使用的级别必须被剔除
exclude 代表即使存在也应该被剔除的因子级别
except 代表不应该被剔除的级别的列的索引
例1 :
# Defining vector
x <- c(1, 3, 4, 8, 1, 5, 4, 4, 5, 6)
# Defining factor object for vector
f <- factor(x)
# Print factor object
cat("Factor object before deleting value:\n")
print(f)
cat("\n")
# Delete value at index 2
f <- f[-2]
# Print factor object
cat("Factor object after deleting value:\n")
print(f)
cat("\n")
cat("After dropping unused level:\n")
new_f <- droplevels(f)
print(new_f)
输出
Factor object before deleting value:
[1] 1 3 4 8 1 5 4 4 5 6
Levels: 1 3 4 5 6 8
Factor object after deleting value:
[1] 1 4 8 1 5 4 4 5 6
Levels: 1 3 4 5 6 8
After dropping unused level:
[1] 1 4 8 1 5 4 4 5 6
Levels: 1 4 5 6 8
例2 :
# Defining columns
x <- factor(c(7, 3, 3, 7, 5, 5, 1))
y <- factor(c(1, 1, 1, 4, 4, 4, 2))
z <- c(1, 5, 3, 2, 9, 4, 7)
# Defining data frame
df <- data.frame(x, y, z)
df <- df[1:6, ]
# Print structure of data frame
str(df)
cat("\n")
# Drop levels from data frame
df_drop <- droplevels(df)
# Print structure of new data frame
str(df_drop)
输出
'data.frame': 6 obs. of 3 variables:
x: Factor w/ 4 levels "1", "3", "5", "7": 4 2 2 4 3 3 y: Factor w/ 3 levels "1", "2", "4": 1 1 1 3 3 3
z: num 1 5 3 2 9 4
'data.frame': 6 obs. of 3 variables: x: Factor w/ 3 levels "3", "5", "7": 3 1 1 3 2 2
y: Factor w/ 2 levels "1", "4": 1 1 1 2 2 2 z: num 1 5 3 2 9 4