Как выбрать данные с полными случаями определенного столбца?
Я пытаюсь получить фрейм данных (just.samples.with.shoulder.values
, скажем) содержат только образцы, которые имеют значения NA
. Я попытался выполнить это с помощью функции complete.cases
, но я полагаю, что я делаю что-то неправильно синтаксически ниже:
data <- structure(list(Sample = 1:14, Head = c(1L, 0L, NA, 1L, 1L, 1L,
0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L), Shoulders = c(13L, 14L, NA,
18L, 10L, 24L, 53L, NA, 86L, 9L, 65L, 87L, 54L, 36L), Knees = c(1L,
1L, NA, 1L, 1L, 2L, 3L, 2L, 1L, NA, 2L, 3L, 4L, 3L), Toes = c(324L,
5L, NA, NA, 5L, 67L, 785L, 42562L, 554L, 456L, 7L, NA, 54L, NA
)), .Names = c("Sample", "Head", "Shoulders", "Knees", "Toes"
), class = "data.frame", row.names = c(NA, -14L))
just.samples.with.shoulder.values <- data[complete.cases(data[,"Shoulders"])]
print(just.samples.with.shoulder.values)
Мне также было бы интересно узнать, является ли какой-то другой маршрут (используя subset()
, скажем) более мудрой идеей. Большое спасибо за помощь!
Ответы
Ответ 1
Вы можете попробовать использовать is.na
:
data[!is.na(data["Shoulders"]),]
Sample Head Shoulders Knees Toes
1 1 1 13 1 324
2 2 0 14 1 5
4 4 1 18 1 NA
5 5 1 10 1 5
6 6 1 24 2 67
7 7 0 53 3 785
9 9 1 86 1 554
10 10 1 9 NA 456
11 11 1 65 2 7
12 12 1 87 3 NA
13 13 0 54 4 54
14 14 1 36 3 NA
Ответ 2
Вы также можете попробовать complete.cases
, который вернет логический вектор, который позволит подмножать данные Shoulders
data[complete.cases(data$Shoulders), ]
# Sample Head Shoulders Knees Toes
# 1 1 1 13 1 324
# 2 2 0 14 1 5
# 4 4 1 18 1 NA
# 5 5 1 10 1 5
# 6 6 1 24 2 67
# 7 7 0 53 3 785
# 9 9 1 86 1 554
# 10 10 1 9 NA 456
# 11 11 1 65 2 7
# 12 12 1 87 3 NA
# 13 13 0 54 4 54
# 14 14 1 36 3 NA
Ответ 3
Существует небольшая разница между использованием is.na и complete.cases. is.na удалит фактические значения na, тогда как цель состоит в том, чтобы контролировать только переменную, а не обрабатывать пропущенные значения /na те, которые могут быть допустимыми точками данных