Я хотел бы использовать функцию 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 продолжает давать мне результат, как указано выше, чего не должно быть.
Я пробовал другие комбинации с успехом, но кажется, что использование «Района» в 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)
Любая причина, по которой District вызывает это? Совершенно неправильно, что с такой комбинацией подмножества 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%
делает выше?
Я так застрял. Любая помощь по сборке.