我的一个变量是关于Garbage Disposal的类型。这是R中字段的摘要。
summary(train$GarageType)
2Types Attchd Basment BuiltIn CarPort Detchd NA's
6 870 19 88 9 387 81
现在,我知道无论NA在哪里,都没有Garbage Disposal。因此,我需要设置一个像' null' ''
如何给火车$ GarageType< - ' null'当火车$ garbage = NA>
Expected OutPut will be like
summary(train$GarageType)
2Types Attchd Basment BuiltIn CarPort Detchd NULL
6 870 19 88 9 387 81
这样Null是一种有效的类型。
我得到的最近的解决方案是
> x<-train
> x$GarageType <- factor(ifelse( is.na(x$GarageType), "NULL", x$GarageType))
> summary(x$GarageType)
1 2 3 4 5 6 **NULL**
6 870 19 88 9 387 81
> summary(train$GarageType)
2Types Attchd Basment BuiltIn CarPort Detchd **NA's**
6 870 19 88 9 387 81
现在,我可以用NULL重命名NA,但是像2Types,Attchd等其他人变成1,2等。
答案 0 :(得分:0)
如果我正确阅读了您的问题,您需要使用ifelse()。有两种方法可以做到这一点。
#Creating a simple reproducible example:
x <- dplyr::tibble(GarageType = c(1:20, rep(NA,20))
#Changing the column directly
x$GarageType <- ifelse(is.na(x$GarageType)==TRUE, "NULL", x$GarageType)
#Creating a new dataframe with a column (needs tidyverse)
x <- x %>% mutate(GarageType = ifelse(is.na(GarageType) == TRUE, "NULL", GarageType))
答案 1 :(得分:0)
如果你想只替换1个变量的NA,那么我们可以在数据框中添加一个新列,对其应用函数并替换旧的列/变量
df $ newcol&lt; - NA
然后使用for循环和if else条件
for(i in 1 to nrow(df)){
If(is.na(df[i,oldcol])){
Df[i,newcol]<-"null"
}else{
Df[i,newcol]<- df[i,oldcol]
}
Next
}
然后将此新var值分配给旧var
Df $ oldcol&lt; - df $ newcol
答案 2 :(得分:0)
我发现了同样的问题和答案, https://datascience.stackexchange.com/users/41522/salb
我试过了,我得到了预期的结果。
> df <- train
> levels <- levels(df$GarageType)
> summary(levels)
Length Class Mode
6 character character
> levels
[1] "2Types" "Attchd" "Basment" "BuiltIn" "CarPort" "Detchd"
> levels[length(levels) + 1] <- "None"
> df$GarageType <- factor(df$GarageType, levels = levels)
> summary(df$GarageType)
2Types Attchd Basment BuiltIn CarPort Detchd None NA's
6 870 19 88 9 387 0 81
> df$GarageType[is.na(df$GarageType)] <- "None"
**> summary(df$GarageType)
2Types Attchd Basment BuiltIn CarPort Detchd None
6 870 19 88 9 387 81**