gpt4 book ai didi

从因子变量中删除特定因子水平

转载 作者:行者123 更新时间:2023-12-02 04:31:14 25 4
gpt4 key购买 nike

我有一个数据框,其中包含多个具有 5 个因子水平的变量。我只想删除其中一个级别。首先,我将该级别的所有实例分配给 NA,然后使用 droplevels 命令删除空级别。

但是,对于我的数据框中的一个变量,我不希望删除的级别之一没有观察结果。有没有办法只删除特定的因子级别,而不仅仅是空的因子级别。

这是一个可重现的示例

df <- data.frame(var1=rep(letters[1:5],2),var2=rep(letters[5:1],2),var3=c("a","c","d","e","a","c","d","e","a","c"))
levels(df$var3)<-c("a","c","d","e","b")

这会设置一个像我一样的数据框。现在我想删除级别 e 的所有实例,然后将其作为可能的级别删除。我使用下面的代码执行此操作。

df2<-replace(df, df=="e",NA)
df2<-droplevels(df2)

问题是当我使用droplevels时,它也会从var3中删除级别b。我不想从所有变量中删除级别 b 只是级别 e。我一直在寻找一种方法来删除特定级别,但尚未找到答案。谁能告诉我如何删除特定的因素水平?我理想中想要的是一个 droplevels 命令,我可以告诉它只删除级别 e。有这样的功能吗?

最佳答案

str(
as.data.frame(
lapply(
df2,
function(x) factor(as.character(x), levels=levels(x)[levels(x) != "e"])
) ) )
# 'data.frame': 10 obs. of 3 variables:
# $ var1: Factor w/ 4 levels "a","b","c","d": 1 2 3 4 NA 1 2 3 4 NA
# $ var2: Factor w/ 4 levels "a","b","c","d": NA 4 3 2 1 NA 4 3 2 1
# $ var3: Factor w/ 4 levels "a","c","d","b": 1 2 3 NA 1 2 3 NA 1 2

关于从因子变量中删除特定因子水平,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20913379/

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