使用ifelse
选项时遇到一些麻烦。
我想使用此函数来进行多元线性回归。
我有一个很大的数据集,大多数数据是“ NA”,另一些是
话。
这个想法是拥有NA = 0
,如果没有NA
,那么它应该等于1。
这样我就完成了:
dsp = ifelse (sp == "NA", 0, 1)
但是当我打印dsp时:我可以看到将非NA
的值更改为1
,但是
NA
的值不会更改为0
,并且仍然相同。
我尝试了is.na()
函数,然后对于FALSE
值得到了NA
,对于非NA值则得到了TRUE
。我尝试过ifelse( dsp == "False", 0, 1)
,但结果却与dsp = ifelse (sp == "NA", 0, 1)
我应该怎么做?
感谢您的帮助:)
答案 0 :(得分:1)
如果我对您的理解正确,那么您想将向量中的所有NA
替换为0
,并且如果1
有一个值。
如@Maurits Evers所说,您可以这样做:
require(tidyverse)
df %>%
mutate(x = ifelse(is.na(x), 0, 1))
此外,您可以使用case_when
获得相同的结果:
df %>%
mutate(x = case_when(
is.na(x) ~ 0,
TRUE ~ 1))
此外,您也可以使用基数R:
df[which(abs(df$x) >= 0), ] <- 1
df$x[is.na(df$x), ] <- 0
如@Tino所建议,另一个基本的R选项可以使用transform()
和ifelse()
。
transform(df, x = ifelse(is.na(x), 0, 1))
样本数据集:
df <- data.frame(x = c(NA, 1, 2, NA, 3))
答案 1 :(得分:-2)
只需在原始代码下方添加另一行代码,它便可以正常工作:
dsp = ifelse (sp == "NA", 0, 1)
dsp[is.na(dsp)]<-0