2013-10-05 2 views
0

Я пытаюсь манипулировать файловой рамкой. Кадр данных содержит отсутствующее значение (NA), и я хотел бы заменить каждое значение NA на "." (Строка).R: как легко заменить отсутствующие значения в кадре данных на "."

Как я могу это сделать? Ниже приведен пример: рассмотрим следующий кадр данных

dataset1 
    no  name 
    1  John 
    2  Paul 
    3  NA 
    4 Sophie 

Как я могу изменить этот набор данных в:

dataset1 
    no  name 
    1  John 
    2  Paul 
    3   . 
    4  Sophie 

Спасибо,

+3

Не расстраивайтесь по downvotes и вопрос закрыт. В общем, здесь, на SO, мы любим усилия и пытаемся показать. Просто не забудьте включить то, что вы сделали, и попытались и что конкретно не работает. Если вы еще не дошли до этого этапа, сначала выполните поиск по документам google и 'R', а затем укажите, с чем конкретно вам нужна помощь. Удачи –

+1

@RicardoSaporta, тем больше я оглядываюсь на SO, к сожалению, мне кажется, что более низкие голоса в более раннем режиме под [tag: r], чем другие теги. – A5C1D2H2I1M1N2O1R2T1

+0

@AnandaMahto, я не часто посещаю многие другие части SO, но я надеюсь, что это не так. –

ответ

4

Ваши данные:

mydf <- read.table(text='no  name 
    1  John 
    2  Paul 
    3  NA 
    4 Sophie',header=TRUE,stringsAsFactors=FALSE) 

Перекодировка:

mydf[is.na(mydf)] <- '.' 

Результат:

> mydf 
    no name 
1 1 John 
2 2 Paul 
3 3  . 
4 4 Sophie 
+0

Я пробовал ваш метод и не менял никакого содержания в рамках фрейма данных ... идея заключается в замене NA (отсутствует значение) со строкой "." – user2792124

+1

Вы дважды повторяли строку, и я не понимаю, что вы пытаетесь сделать. Томас дает вам, как выглядит ваш ожидаемый результат. –

+0

вы правильно понимаете мой вопрос (спасибо за входной битв), это просто, когда я пытаюсь выполнить ваш метод, результирующий кадр данных по-прежнему содержит NA, а не «.». – user2792124

1

Только мысль, основанная на ваш последний вопрос. Если вы не конвертировать factor с до character с, вам нужно будет разместить на новый уровень, ".":

for (i in seq(ncol(dataset1))) { 
     col <- dataset1[, i] 
     if (is.factor(col)) 
     levels(col) <- c(levels(col), ".") 
     col[is.na(col)] <- "." 
     dataset1[, i] <- col 
    } 
+0

+1 Хорошая точка, что факторы обработки делают это более сложным. – Thomas

+0

так полезно; спасибо :) – user2792124

+2

проблем нет. В общем, если вы нажмете «предупреждение» или «ошибка», это полезно тем, кто предлагает свою помощь вам, если вы поделитесь этой информацией –

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