Базовый R — как исключить строки с пустыми столбцами, как отобразить данные для определенных значений столбца

#r

#r

Вопрос:

Два вопроса о R: 1.) Если у меня есть набор данных со значениями нескольких столбцов и одно из значений столбца ‘test_score’, как я могу исключить строки с пустыми значениями (и / или нечисловыми значениями) для этого столбца? (используя pie(), hist() или cor())

2) Если в наборе данных есть столбец с именем ‘Teachers’, как я могу отобразить столбец ‘testscores’ только для строк, где Teacher = Jones?

Создание отдельных векторов без отсутствующих данных:

 dat.nomissing <- tenthgrade[!is.nan(Score),]
  

кажется проблематичным, поскольку два столбца должны оставаться сопряженными.
Я думал о чем-то таком, как:

 hist(!is.nan(tenthgrade$Score)[tenthgrade$Teacher=='Jones'])
  

Однако is.nan создает список значений TRUE, FALSE (как и должно быть).

Комментарии:

1. Покажите данные или их макет.

2. Я бы посмотрел одно из руководств, прилагаемых к R: cran.r-project.org/manuals.html . Или ознакомьтесь с вопросами R здесь, на SO, на все эти вопросы недавно были даны подробные ответы.

3. Я отправил вопрос суперпользователю, поскольку чувствовал, что здесь это было бы неуместно. Это казалось слишком простым, и я чувствовал, что должен знать, как это сделать с имеющейся информацией… но этого не произошло.

Ответ №1:

Используйте подписку. Например:

 dat[!is.na(dat$test_score),]
hist(dat$test_score[dat$Teachers=='Jones'])
  

И более полный пример с искусственными данными:

 # Create artificial dataset
dat <- data.frame('test_score'=rnorm(500), 'Teachers'=sample(c('Jones', 'Smith', 'Clark'), 500, replace=TRUE))   

# Introduce some random missingness
dat$test_score[sample(1:500, 50)] <- NA  

# Keep if test_score is valid                                                                      
dat.nomissing <- dat[!is.na(dat$test_score),]   

# Plot subset of data                                          
 hist(dat$test_score[dat$Teachers=='Jones'])