2014-09-01 5 views
-2

Я хотел бы изменить имя записей в столбцах фрейма данных, когда значения одного из столбцов равны 0. Я пробовал этот путь, но получаю сообщение об ошибке , Предположим, что я хотел бы изменить записи колонок 1,2,3 на «А», если записи в колонке 3, 0переименуйте значение в столбце в соответствии с условием

df[ df[ , 3 ] == 0 , c(1,2,4) ] <- "A" 

я

Warning message: 
In `[<-.factor`(`*tmp*`, iseq, value = c("A", "A", "A", : 
    invalid factor level, NA generated 
+3

Это не ошибка - это предупреждающее сообщение о том, что один из ваших столбцов является фактором, который не имеет уровня для «A». Вам может быть проще хранить ваши данные в виде строк вместо факторов (например, путем создания ваших данных с аргументом 'stringsAsFactors = FALSE'). – josliber

+0

Ваше право, это предупреждение, но проблема в том, что вместо получения «А» я получаю . – user34771

+0

@ user34771, вы даже прочитали то, что написал josilber, или вы просто уходите после «Это не ошибка»? Какая часть * stringsAsFactors = FALSE аргумент * вы не понимаете? Пожалуйста, прочитайте документацию с '? Data.frame' –

ответ

0

Должен работать после выполнения команды:

df[,c(1,2,4)]=sapply(df[,c(1,2,4)], function(x) as.character(x)) 

Может быть сокращен до следующих, как предложено josilber в комментариях:

df[,c(1,2,4)]=sapply(df[,c(1,2,4)], as.character) 
+0

Большое спасибо, она отлично работала. Я был бы очень признателен, если бы вы могли дать мне дополнительную информацию об изменении данных на персонаж. – user34771

+0

? As.character,? As.numeric,? As.factor и т. Д. Команды помогут вам. Также вы должны нажать на галочку, чтобы принимать/повышать, если вы найдете ответы полезными. – rnso

+0

жаль, что я все еще новичок. Я принял ваш очень полезный ответ, но до сих пор не хватает репутации для голосования. – user34771

 Смежные вопросы

  • Нет связанных вопросов^_^