Размер выборки FID на основе количества строк в данных

У меня есть набор данных, который выглядит так:

Область, крайИмя
Регион 1Имя 14
Регион 2Имя 18
Регион 2Имя 2
Регион 2Имя 21
Регион 2Имя 44
Регион 3Имя 64
Регион 3Имя 24
Регион 4Имя 1
Регион 4Имя 1
Регион 4Имя 98
Регион 5Имя 98
Регион 5Имя 8
Регион 5Имя 8
Регион 5Имя 8
Регион 5Имя 98

Мне нужно разбить данные по регионам, а затем выбрать случайную выборку только из 5% «имени» для каждого региона на основе количества строк в регионе.

Допустим, в регионе 2 есть 30 имен, тогда мне нужна случайная выборка 3 * 0,05. Если в регионе 6 50 имен, то мне нужна случайная выборка 5 * 0,05.

До сих пор мне удалось разделить() данные, используя

d = split(data, f = data$Region)

но когда я пытаюсь запустить функцию lapply, я получаю сообщение об ошибке, что в списке, предоставленном split(), есть другое количество строк.

lapply(data, function(x) {
 sample_n(data, nrow(d)*.05)
} ) 

есть идеи?

Спасибо

поделитесь остальной частью своего кода и сообщением об ошибке, не предоставляйте фотографии своих данных, используйте dput(), чтобы поделиться своими данными

Mike 10.05.2022 22:04
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
20
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот базовое решение R.

lapply(split(data, data$Region),
       \(x) x[sample(nrow(x), nrow(x) * 0.05),])

Затем вы можете преобразовать его обратно во фрейм данных с помощью rbind

спасибо, нет ли опечатки с "\"? я получаю сообщение об ошибке «Ошибка: неожиданный ввод в: «lapply (split (data, data $ Region), \» "

Deeba Yavrom 11.05.2022 02:06

@DeebaYavrom Возможно, вы используете старую версию R. Попробуйте заменить \(x) на function(x)

Aron 11.05.2022 10:20

Другие вопросы по теме