Я пытаюсь написать функцию для агрегирования или подстановки фрейма данных по определенному столбцу, а затем подсчитать долю значений в другом столбце в этом фрейме данных с определенными значениями.
В частности, соответствующие частимоего кадра данных, allmutations, выглядят так:
gennumber sel
1 -0.00351647088810292
1 0.000728499401888683
1 0.0354633950503043
1 0.000209700229276244
2 6.42307549736376e-05
2 -0.0497259605114181
2 -0.000371856995145525
В каждом поколении (gennumber) я хотел бы подсчитать долю значений в «sel», которые больше 0,001, между -0,001 и0,001 и менее -0,001.На протяжении всего набора данных я только что делал это:
ben <- allmutations$sel > 0.001 #this is for all generations
bencount <- length(which(ben==TRUE))
totalmu <- length(ben) # #length(ben) = total # of mutants
tot.pben <- bencount/totalmu #proportion
Каков наилучший способ выполнить эту операцию для каждого значения в gennumber?Кроме того, есть ли простой способ получить пропорцию значений в диапазоне -0,001
Спасибо за любую помощь, которую вы можете оказать, и, пожалуйста, дайте мне знать, если я могу дать какие-либо разъяснения.
dput()
данных:
structure(list(gennumber = c(1L, 1L, 1L, 1L, 2L, 2L, 2L), sel = c(-0.00351647088810292,
0.000728499401888683, 0.0354633950503043, 0.000209700229276244,
6.42307549736376e-05, -0.0497259605114181, -0.000371856995145525
)), .Names = c("gennumber", "sel"), class = "data.frame", row.names = c(NA,
-7L))