demo - это имя набора данных. Salary.Slab - это имя переменной. Я использую инструкцию if else внутри цикла для создания ведер.R-программирование - отсутствует значение, где требуется TRUE/FALSE: для цикла
head(demo$Salary.Slab)
[1] 5 7 1 6 NA NA
В колонке есть некоторые недостающие значения. Я отдаю себе отчет в том, что если оператор не работает со значениями NA, поэтому я написал следующий код, используя is.na
for(i in nrow(demo))
{
if(is.na(demo$Salary.Slab[i])){
demo$salary = "k"
}else if(demo$Salary.Slab[i] == 1){
demo$salary = "Very Low"
}else if(demo$Salary.Slab[i] == 3) {
demo$salary = "Very Low"
}else if(demo$Salary.Slab[i] == 4){
demo$salary = "Low"
}else if(demo$Salary.Slab[i] == 5){
demo$salary = "Low"
}else if(demo$Salary.Slab[i] == 6){
demo$salary = "Low"
}
}
зарплату является новым переменным Я создаю для хранения значений ведер ("очень «низкий», «низкий» и т. д.)
Но когда я запускаю приведенный выше код, я получаю все значения «k» в каждой строке. В то время как я должен получить «k» только в местах, где Salary.Slab = NA и «очень низкий», где Salary.slab == 1 и так далее. Скажите, где я делаю неправильно.
Если это будет 'демонстрационная $ зарплаты [я]' вместо 'демо $ salary' каждый раз? –
Ваши условия в порядке, но присваивания у вас есть, например, 'demo $ зарплата =" k "', присваивать весь вектор, а не элемент 'i'th. Как говорит Андрей, добавьте '[i]' в строки назначения. Или см. 'Ifelse' для векторизованного метода. – Gregor