将 NA 转换为 r 中的因数
Converting NA's to factor in r
我想将数据框的一列(并且只有一列)中的所有 NA 转换为 "non-PA"。该列的 class 是因子。
我以前成功使用过:
df$column[is.na(df$column)] <- "non-PA"
但由于某种原因,这次我收到了这条错误信息:
In `[<-.factor`(`*tmp*`, is.na(management.points$management),
value = c(NA, : invalid factor level, NA generated
我已经尝试将列转换为字符以及其他各种解决方法,但我仍然收到相同的错误消息。我做错了什么?
您必须先将列转换为字符向量:
df$column <- as.character(df$column)
df$column[is.na(df$column)] <- "non-PA"
df$column <- factor(df$column)
发生此错误是因为您无法在因子中输入值,如果它还不是该因子的水平。
一个潜在的缺点(来自@docendo 的评论)是这可能会删除未使用的因子水平。要保留它们,您可以将 "non_PA" 添加到关卡而不是转换为字符:
levels(df$column) <- union(levels(df$column), "non_PA")
df$column[is.na(df$column)] <- "non-PA"
我想将数据框的一列(并且只有一列)中的所有 NA 转换为 "non-PA"。该列的 class 是因子。
我以前成功使用过:
df$column[is.na(df$column)] <- "non-PA"
但由于某种原因,这次我收到了这条错误信息:
In `[<-.factor`(`*tmp*`, is.na(management.points$management),
value = c(NA, : invalid factor level, NA generated
我已经尝试将列转换为字符以及其他各种解决方法,但我仍然收到相同的错误消息。我做错了什么?
您必须先将列转换为字符向量:
df$column <- as.character(df$column)
df$column[is.na(df$column)] <- "non-PA"
df$column <- factor(df$column)
发生此错误是因为您无法在因子中输入值,如果它还不是该因子的水平。
一个潜在的缺点(来自@docendo 的评论)是这可能会删除未使用的因子水平。要保留它们,您可以将 "non_PA" 添加到关卡而不是转换为字符:
levels(df$column) <- union(levels(df$column), "non_PA")
df$column[is.na(df$column)] <- "non-PA"