У меня есть некоторые данные (ссылка для скачивания: http://spreadsheets.google.com/pub?key=0AkBd6lyS3EmpdFp2OENYMUVKWnY1dkJLRXAtYnI3UVE&output=xls), которые я пытаюсь фильтровать. Я переконфигурировал данные, так что вместо одной строки для каждой страны и одного столбца в год каждая строка кадра данных является комбинацией за год (т. Е. Афганистан, 1960, NA).R заполнить переменную для конкретного наблюдения в кадре данных
Теперь, когда я это сделал, я хочу создать подмножество исходных данных, которое исключает любую страну, у которой есть более 10 лет отсутствия данных об использовании контрацептивов.
Я подумал создать список уникальных названий стран во втором кадре данных, а затем добавить переменную в этот фрейм, который содержит # строк для каждой страны, где есть NA для использования в контрацепции (т.е. для Афганистана у него было бы 46). Моя первая мысль (наиболее свободно говорящая на VB.net) заключалась в том, чтобы использовать цикл for для итерации по странам, получить количество NA для этой страны, а затем обновить второй фрейм данных с этим значением.
В этом ключе я попытался следующие:
for(x in cl){
+ x$rc = nrow(subset(BCU, BCU$Country == x$Country))
+ }
После этого не удалось, немного Googling привел меня к вопросу о здесь (забыл захватить ссылку), который предложил использовать by()
. Основываясь на том, что я пробовал:
by(cl, 1:nrow(cl), cl$rc <- nrow(subset(BCU, BCU$Country == cl$Country
& BCU$Contraceptive_Use == "NA")))
(cl
является вторым фреймом данных с перечислением названий стран и BCU
начального использование контрацептивов кадр данных)
Я довольно новым для R (задачи I «Я работаю для курса R на Udacity), поэтому я свободно признаю, что это не лучший подход, но мне все же интересно, как это сделать.