Привет. Я пытаюсь научиться циклически проходить через несколько групп во фрейме данных и применять определенные арифметические операции.У меня нет опыта программирования, и я пытаюсь пройти через несколько условий.
Мои данные выглядят следующим образом:
Event = c(1,1,1,1,1,2,2,2,2,2)
Indiv1=c(4,5,6,11,45,66,8,9,32,45)
Indiv2=c(7,81,91,67,12,34,56,78,90,12)
Category=c(1,1,2,2,2,1,2,2,1,1)
Play_together=c(1,0,1,1,1,1,1,1,0,1)
Money=c(23,11,78,-9,-12,345,09,43,21,90)
z = data.frame(Event,Indiv1,Indiv2,Category,Play_together,Money)
Что я хотел бы сделать, это просмотреть каждое событие и каждую категорию и взять среднее значение денег в тех случаях, когда Play_together ==1. Когда Play_together == 0, я хотел бы применить Money / 100.
Я понимаю, что цикл будет выглядеть примерно так:
for i in 1:nrow(z){
#loop for event{
#loop for Category{
#Define avg or division function
}
}
}
Однако я не могу показатьсяреализовать это с помощью вложенного цикла.Я видел другой пост (ссылка: применить функцию для каждой подгруппы ), который использует пакет dplyr.Мне было интересно, может ли кто-нибудь помочь мне реализовать это без использования каких-либо пакетов (я знаю, что это может занять больше времени по сравнению с использованием пакетов R).Я пытаюсь изучить R, и это первый раз, когда я работаю с вложенными циклами.
Конечный результат будет выглядеть так: ![enter image description here](https://i.stack.imgur.com/ATcsZ.jpg)
гдедля события 1 выполняется следующее:
a) Для группы 1:
Play_together == 1 в строке 1;мы берем среднее значение денег и, следовательно, конечный результат = 23/1 = 23
Play_together == 0 в строке 2;мы берем Money / 100 = 0,11
b) Для категории 2: Play_together == 1 для всех наблюдений.Мы берем средние деньги за все три наблюдения.
То же самое относится и к событию 2. В моем фактическом наборе данных у меня есть событие = 600 и количество категорий в диапазоне от 1 до 10. Некоторые события могут иметь только 1 категорию и максимум 10 категорий.Поэтому любая функция должна быть чрезвычайно гибкой.Общее количество наблюдений в моем наборе данных составляет около 1,5 миллионов, поэтому любые изменения в циклическом процессе для сокращения времени, необходимого для выполнения операции, будут чрезвычайно полезными (хотя на данном этапе моим приоритетом является сам процесс циклического анализа).
Еще раз было бы очень полезно, если бы вы могли показать мне, как использовать вложенные циклы, и кратко объяснить шаги.Очень ценится.