У меня есть кадр данных с 2600 элементами, которые распространяются на уровне 249 факторов (лиц). Набор данных не сбалансирован.R - вырезать данные из фрейма данных, чтобы сбалансировать его
Я хотел бы, чтобы удалить все записи, которые имеют менее 5 вхождения в один фактор. Также я хотел бы обрезать те, у которых более 5 вхождений до 5. Таким образом, в конце я хочу иметь фрейм данных с меньшим количеством записей, но который сбалансирован над человеком фактора.
Набор данных строится следующим образом:
file_list <- list.files("path/to/image/folder", full.names=TRUE)
# the folder contains 2600 images, which include information about the
# person factor in their file name
file_names <- sapply(strsplit(file_list , split = '_'), "[", 1)
person_list <- substr(file_names, 1 ,3)
person_class <- as.factor(person_list)
imageWidth = 320; # uniform pixel width of all images
imageHeight = 280; # uniform pixel height of all images
variableCount = imageHeight * imageWidth + 2
images <- as.data.frame(matrix(seq(count),nrow=count,ncol=variableCount))
images[1] <- person_class
images[2] <- eyepos_class
for(i in 1:count) {
img <- readJPEG(file_list[i])
image <- c(img)
images[i, 3:variableCount] <- image
}
Поэтому в основном мне нужно, чтобы получить количество выборок на уровне фактора (например, при использовании summary(images[1])
, а затем выполнять операции обрезки данных . множество я не знаю, как начать здесь и любая помощь ценится
Я знаю, что ваши данные не маленькая, но для того, чтобы написать хороший вопрос, который воспроизводимым, который получит вас upvotes и ответы, пожалуйста, включите воспроизводимый, что мы можем копировать и вставлять, чтобы воспроизвести ваши данные/проблему и воспроизвести вашу проблему. Вы можете использовать встроенный набор данных или создать свой собственный и включить код, который вы использовали. –
Ну, я сделал все возможное, чтобы сделать его воспроизводимым, но все же потребуется набор данных, который доступен публично, но скорость загрузки медленная af – 4ndro1d