【发布时间】:2016-12-02 11:06:24
【问题描述】:
这个问题似乎太简单了,甚至无法在这里提出;但我找不到有效的解决方案。我有一个 3 列的数据框 (df);其中一个是因子列 (df$Colors),具有 3 个级别(“蓝色”、“红色”和“黑色”)。在另一列 (df$Outliers) 中是数值,其中一些是“NA”。我想添加另一列(比如df$NewColors),类似于df$Colors,其中df$Outliers、df$NewColors = "Orange" 中的“NA”。
我添加了一个额外的级别,如下所示:
> levels(df$Colors) <- c(levels(df$Colors), "Orange")
但是,新添加的列似乎正在使用旧的“颜色”值,而不是在应该的地方用“橙色”替换它。它还为 df$Colors 的因子生成整数值,但我想保留旧的分类变量。
我使用的代码如下:
>levels(df$Color) <- c(levels(df$Color),"Orange")
> for (i in 1:nrow(df)) {
df$NewColors[i] <- ifelse (is.na(df$Outliers[i]), "Orange", df$Colors[i])
}
我哪里出错了?
这是示例数据:
> BodyLength <- rep(seq(1,9),2)
> Colors <- rep(c("Black","Blue","Red"),6)
> Outliers <- c(seq(1,8),"NA",seq(1,8),"NA")
> df <- data.frame(BodyLength,Colors,Outliers)
【问题讨论】:
-
“NA”与 NA 不同。
标签: r