R studio: используйте только указанные c переменные, но при этом можете работать и не терять другую информацию о переменных - PullRequest
0 голосов
/ 23 марта 2020

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

Age Gender Group  V1 V2 V3 V4 V5
20     1     1       2   1     4
21     2     1    2      2     1
35     2     2    2         1
22           2    1         2 

Я вижу, что многие предлагают подмножество / функцию выбора для выполнения анализа с указанными c переменными, но мне нужно работать с v1 до v5, чтобы понять, сколько строк удалить причину пропущенных данных, но не теряя информацию о возрасте, поле и группе. Поэтому мне нужно сказать r удалить всю строку, чтобы в v1-v5 было более 3 пропущенных данных (что я знаю, как это сделать), и вернуть мне фрейм данных со всей информацией оставшихся данных (это то, что я пропускаю). Примерно так:

Age Gender Group  V1 V2 V3 V4 V5
20     1     1       2   1     4
21     2     1    2      2     1

Не знаю, смогу ли я объяснить себя достаточно, но заранее благодарю

1 Ответ

0 голосов
/ 23 марта 2020

Мы можем использовать rowSums на выбранных столбцах. (столбцы, которые начинаются с "V" и числа).

cols <- grep('^V\\d+', names(df))

Если у вас есть NA значения как отсутствующие данные

df[rowSums(is.na(df[cols])) < 3, ]

#  Age Gender Group V1 V2 V3 V4 V5
#1  20      1     1 NA  2  1 NA  4
#2  21      2     1  2 NA  2 NA  1

Если пустые ячейки как отсутствующие данные.

df[rowSums(df[cols] == '') < 3, ]

Другой вариант с построчной разверткой apply

df[apply(is.na(df[cols]), 1, sum) < 3, ]

данные

df <- structure(list(Age = c(20L, 21L, 35L, 22L), Gender = c(1L, 2L, 
2L, NA), Group = c(1L, 1L, 2L, 2L), V1 = c(NA, 2L, 2L, 1L), V2 = c(2L, 
NA, NA, NA), V3 = c(1L, 2L, NA, NA), V4 = c(NA, NA, 1L, 2L), 
V5 = c(4L, 1L, NA, NA)), class = "data.frame", row.names = c(NA, -4L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...