Помочь с сохраняющейся проблемой при использовании функции 'subset' в R - PullRequest
1 голос
/ 11 июля 2011

Я хотел бы использовать функцию subset в R для извлечения небольших групп данных временных рядов исследования панели.

Мои данные состоят из кадра данных, состоящего из шести столбцов: район (8 районов),пол, возрастной интервал (4 группы), год, месяц и столбец подсчета.

Пример:

  District Gender Year Month AgeGroupNew TotalDeaths
1 Eastern  Female 2003     1           0           4
2 Eastern  Female 2003     1        01-4           1
3 Eastern  Female 2003     1       05-14           1
4 Eastern  Female 2003     1         15+          91
5 Eastern  Female 2003     2           0           4
6 Eastern  Female 2003     2        01-4           1

Я хотел бы выделить меньшее подмножество для каждого района, Пол и возрастной интервал вполучить что-то вроде этого:

     District  Gender Year Month AgeGroupNew TotalDeaths
     Northern    Male 2003     1        01-4           0
     Northern    Male 2003     2        01-4           1
     Northern    Male 2003     3        01-4           0
     Northern    Male 2003     4        01-4           3
     Northern    Male 2003     5        01-4           4
     Northern    Male 2003     6        01-4           6
     Northern    Male 2003     7        01-4           5
     Northern    Male 2003     8        01-4           0
     Northern    Male 2003     9        01-4           1
     Northern    Male 2003    10        01-4           2
     Northern    Male 2003    11        01-4           0
     Northern    Male 2003    12        01-4           1
     Northern    Male 2004     1        01-4           1
     Northern    Male 2004     2        01-4           0

Переход к

     Northern    Male 2006    11        01-4           0
     Northern    Male 2006    12        01-4           0

До сих пор я пытался использовать это, благодаря DWin указав это в предыдущем вопросе .

subset(datNew, subset=(District=="Eastern" &  Gender=="Female" &  AgeGroupNew=="01-4"))
[1] District    Gender      Year        Month       AgeGroupNew TotalDeaths
<0 rows> (or 0-length row.names)

Но R продолжает давать мне вывод, как указано выше - чего не следует делать.

Я пробовал другие комбинации с успехом, но, кажется, с использованием 'District' вsubset вызывает это <0 rows> (or 0-length row.names).

Это работает:

> head(subset(datNew, Year=="2004" & Month=="8" & AgeGroupNew =="0"))
         District Gender Year Month AgeGroupNew TotalDeaths
77       Eastern  Female 2004     8           0          10
269      Eastern    Male 2004     8           0           6
461  Khayelitsha  Female 2004     8           0          13
653  Khayelitsha    Male 2004     8           0          15
845  Klipfontein  Female 2004     8           0           7
1037 Klipfontein    Male 2004     8           0           6

, но не

> head(subset(datNew, District=="Eastern" & Gender=="Female" & AgeGroupNew =="0"))
[1] District    Gender      Year        Month       AgeGroupNew TotalDeaths
<0 rows> (or 0-length row.names)

Любая причина, почему Округ вызывает это?Абсолютно неправильно, что в этой комбинации подмножеств 0 строк - насколько мне известно, данных достаточно.

Я пробовал экспериментировать - и из других постов это на шаг ближе к тому, что я хочудостичь, но все еще не работает:

> head(subset(datNew,datNew[[1]] %in% District[1] & Gender=="Female" & AgeGroupNew=="0"))
   District Gender Year Month AgeGroupNew TotalDeaths
1  Eastern  Female 2003     1           0           4
5  Eastern  Female 2003     2           0           4
9  Eastern  Female 2003     3           0           5
13 Eastern  Female 2003     4           0          12
17 Eastern  Female 2003     5           0           7
21 Eastern  Female 2003     6           0          13

При этом я не могу выбирать из других округов, таких как «Южный», «Хайелитша» и т. д. Независимо от того, что я изменяю datNew[[1 or 2 or 3]] и District[[1 or 2 or 3]].Я действительно не знаю, что %in% делает выше?

Я так застрял.Любая помощь сборка.

1 Ответ

2 голосов
/ 11 июля 2011

Предсказание: дайте нам результаты str (datNew $ District [1]), и все будет раскрыто.Я предсказываю, что появится непечатный символ, возможно, завершающий пробел (или два).

Так что с результатами str (...) правильный код будет:

subset(datNew, District=="Eastern " & Gender=="Female" & AgeGroupNew =="0")
...