2015-05-01 7 views
2

Я застрял в простом аргументе проблемы с функцией ifelse в R. Я новый пользователь R, и я пытаюсь заполнить пробелы в столбце («первый столбец») в зависимости от значения в другом столбце («второй столбец»).R и функция ifelse

Как я пытаюсь ifelse функцию, я получаю эту ошибку "argument "no" is missing, with no default"

Все, что мне нужно: если тест (условие) ЛОЖЬ, держать значения (от переменной фактора) в «первой колонке» как они есть.

Это пример моего кадра данных, который имеет ~ 6000 набл

# 
#  first         second third 
# 1 Cluster 1        Chest Pain  1 
# 2       Coronary Artery Diseases  1 
# 3 Cluster 6         Anemia  5 
# 4 Cluster 7 Hypertension and Cerebrovascular Disease  4 
# 5    Chronic Obstructive Pulmonary Disease  2 
# 6 Cluster 5         Diabetes 10 

Моя попытка является

sample$first= ifelse(sample$second=="Coronary Artery Diseases","Cluster 10",sample$first) 

Результатом этого является заполнение «кластера 10» в первом столбце, если есть «Болезни коронарной артерии» во втором столбце, но все остальное обследование в первом столбце я получаю. Проблема в том, что «первая» - это фактор-переменная, и мне нужно, чтобы она была фактором.

Любые предложения?

данные

sample <- structure(list(first = c("Cluster 1", "", "Cluster 6", "Cluster 7", 
"", "Cluster 5"), second = c("Chest Pain", "Coronary Artery Diseases", 
"Anemia", "Hypertension and Cerebrovascular Disease", 
"Chronic Obstructive Pulmonary Disease", "Diabetes"), 
third = c("1", "1", "5", "4", "2", "10")), 
.Names = c("first", "second","third"), 
class = "data.frame", row.names = c(NA, -6L)) 
+3

Можете ли вы показать свой код, пожалуйста. Но должен быть по строкам 'ifelse ((первый столбец пуст), (второй столбец), (первый столбец))' или с использованием подмножества 'firstcolumn [(первый столбец пуст)] <- второй столбец' – user20650

+0

Спасибо за ваш Обновление, для проблемы в вашем обновлении вы можете обойти проблему 'factor', используя' as.character', например: 'sample $ first = ifelse (sample $ second ==" Болезни коронарной артерии "," Кластер 10 " , as.character (пример $ first)). Если это не поможет. не могли бы вы опубликовать свой ожидаемый результат, пожалуйста, спасибо – user20650

+0

Спасибо !!! оно работает! НО У меня есть один вопрос. Если я использую функцию as.character, это не изменяет характер моей переменной, которая является фактором один? –

ответ

3

В первом столбце был фактор (не показан на данных выше), при использовании ifelse для замены значений, то принуждают другие значения в столбце уровней факторов (удаление их меток). Это можно было бы использовать, используя as.character()

sample$first <- as.factor(ifelse(sample$second=="Coronary Artery Diseases", 
            "Cluster 10",as.character(sample$first)) 
Смежные вопросы