首页 > 解决方案 > R中的ifelse函数创建一个新变量

问题描述

我在名为“adoption”的数据集文件中创建了一个新变量“house_group”。我希望“house_group”中的条目根据条件为 0 或 1:如果教育(数据集中的另一个变量)为 1,则 house_group 应为 1。但如果教育为 2,则 house_group 应为 0。我使用了以下 ifelse 函数. 但它为新变量 house_group 返回 NA。变量“教育”中的选项是 1 和 2,它们是分类的而不是连续的。我希望 House_group 选项 1 和 0 是分类的。有什么帮助吗?

adoption$house_group<-NA

ifelse(adoption$education=="1",adoption$house_group=="1", adoption$house_group=="0")

[1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [32] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [63] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [94] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[125] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[156] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[187] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[218] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[249] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[280] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[311] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[342] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[373] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[404] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[435] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[466] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[497] NA NA NA NA NA NA NA NA NA NA NA NA NA NA

标签: rfunctionif-statement

解决方案


这是使用 data.frame 掩码解决此问题的一种方法。选择所需的正确行和列,然后按组替换这些 NA。

df <- as.data.frame(sample(1:2,10,replace=TRUE))
colnames(df) <- c('education')
df$house_group <- NA
df[df$education == 1,'house_group'] <- 1
df[df$education == 2,'house_group'] <- 0

另一种使用 ifelse 逻辑的方法。问题是您没有在上面的 ifelse 函数中使用赋值运算符“<-”。

df$house_group <- ifelse(df$education=="1", 1, 0)

推荐阅读