使用R中的ifelse()函数更改其他因素时如何保留某些因素?

时间:2017-06-26 10:02:59

标签: r if-statement nested

我对R编程很新,我还在学习很多东西,所以对于你这些更高级的程序员来说,我的问题可能听起来有些愚蠢。 目前我在R。

中遇到ifelse()函数问题

我的专栏(让我们称之为A)我有这样的问题:

irelevant
irelevant
2
6
very important
5
very important
irelevant
4

因此,我想使用ifelse函数将“非常重要”变为7,将“irelevant”变为1,并保留其他因素。所以我尝试了这个;

Data$B <- ifelse(Data$A == "irelevant", 1,
                        ifelse(Data$A == "very important", 7, Data$A))

不幸的是它没有用,奇怪的是它像这样返回我的专栏:

1
1
3
7
7
6
7
1
5

该函数正确转换为“irelevant”和“非常重要”,但为所有其他因素添加了+1。我怎样才能避免这种情况或改善我的功能?如果你能帮助我,我会很高兴的。

1 个答案:

答案 0 :(得分:0)

在运行character之前,只需将所有内容转换为ifelse

gg = c("irelevant", "irelevant", 2, 6, "very important", 5,
       "very important", "irelevant", 4)
gg = as.data.frame(gg)
gg$gg = as.character(gg$gg)
gg$bb = ifelse(gg$gg == "irelevant", 1,
               ifelse(gg$gg == "very important", 7, gg$gg))
gg

> gg
              gg bb
1      irelevant  1
2      irelevant  1
3              2  2
4              6  6
5 very important  7
6              5  5
7 very important  7
8      irelevant  1
9              4  4