В настоящее время я смотрю на банковские данные за 9 кварталов подряд. Теперь я хочу сохранить только те банки, по которым у меня есть данные за все 9 кварталов. Каждый банк имеет уникальный идентификационный номер. Как я могу фильтровать по идентификатору и хранить только банки с 9 последовательными наблюдениями?
Может быть, способ сделать это состоит в том, чтобы посчитать, как часто появляется удостоверение личности (сертификат), и сохранить только те, которые имеют 9 наблюдений? Вот что я попробовал:
df <- (...)
a = rle(sort(df$cert))
b = data.frame(id=a$values, n=a$lengths)
c = subset(b, n==9)
Я не уверен, что это правильно, потому что я пытаюсь воспроизвести результаты исследования, но после этого шага цифры больше не совпадают.
3 ответа
Одним из вариантов будет n_distinct
с group_by
, сгруппированным по 'id', проверьте, равно ли число различных элементов в 'qtr' 9, и filter
эти строки 'id'
library(dplyr)
df %>%
group_by(id) %>%
filter(n_distinct(qtr) ==9)
Сгенерированный пример. Используйте rowSums
и !is.na
для подсчета количества строк со значениями для всех 9 столбцов.
a[rowSums(!is.na(a))==9,]
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,] 1 4 7 10 13 16 19 22 25
[2,] 3 6 9 12 15 18 21 24 27
Данные использованы.
a <- matrix(1:27, ncol=9, nrow=3)
a[2,2] <- NA
a
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,] 1 4 7 10 13 16 19 22 25
[2,] 2 NA 8 11 14 17 20 23 26
[3,] 3 6 9 12 15 18 21 24 27
library(tidyverse)
df<-data.frame(id=rep(1:4,times=9),
qtr=rep(1:9,each=4))
df%>%
filter(id %in% (df%>%
count(id)%>%
filter(n>8)%>%.$id))
Похожие вопросы
Новые вопросы
r
R - это бесплатный язык программирования с открытым исходным кодом и программная среда для статистических вычислений, биоинформатики, визуализации и общих вычислений. Пожалуйста, предоставьте минимальные и воспроизводимые примеры вместе с желаемым результатом. Используйте dput () для данных и укажите все небазовые пакеты с вызовами library (). Не вставляйте изображения для данных или кода, вместо этого используйте блоки кода с отступом. По вопросам, связанным со статистикой, используйте https://stats.stackexchange.com.