Замена значений в R - PullRequest
       4

Замена значений в R

0 голосов
/ 02 февраля 2012

Я работаю над большим набором данных, пример которого показан ниже:

Df1 <- data.frame(ID = c(1:7),                    
              home_pc = c("VB2 4RF","CB4 2DT", "NE5 7TH", "BY5 8IB", "DH4 6PB","MP9 7GH","KN4 5GH"),
              start_pc = c(NA,"Home", "FC5 7YH","Home", "CB3 5TH", "BV6 5PB",NA),
              end_pc = c(NA,"CB5 4FG","Home","Home","Home","GH6 8HG",NA))

Я хочу сделать две вещи:

  1. Во-первых, удалите строки, которые имеют NA в столбцах "start_pc" и "end_pc".
  2. Когда "Home" написано в столбцах "start_pc" или "end_pc", я хочу иметь возможность заменить его почтовым индексом в home_pc.

Как лучше всего решить эту проблему - кто-нибудь может дать мне какие-нибудь идеи, как лучше всего это сделать?

Большое спасибо.

1 Ответ

1 голос
/ 02 февраля 2012

хорошо, вот одна отправная точка - другие наверняка дадут вам более сложные ответы.

Первый , избавление от значений NA:

  Df1 <-  na.omit(Df1)

это сделает работу для всех столбцов в data.frame объекте

Второй , заменяющий начальный и конечный столбцы. попробуйте функцию ifelse(), которая векторизована:

Df1 <- within(Df1, 
{
  start_pc <- ifelse(start_pc == 'Home', home_pc, start_pc)
  end_pc <- ifelse(end_pc == 'Home', home_pc, end_pc)
})

надеюсь, я правильно понял ваш вопрос! Некоторые дополнительные комментарии: если вы хотите доказать, является ли что-то NA (например, в функции ifelse()), используйте is.na(), наоборот - !is.na() Вы также можете создать подмножества фрейма данных следующим образом: subset(Df1, !is.na(home_pc)) должно работать, например. Конечно, проверьте файл справки для всех этих функций, если вам нужны дополнительные подсказки: ?ifelse или ?subset и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...