Как разделить данные цифры c на группы по 500 без сортировки данных в R? - PullRequest
0 голосов
/ 13 марта 2020

Этот вопрос может показаться простым, но я не могу найти правильную функцию для получения желаемого результата.

Я извлек необходимые данные из загруженного текстового файла, используя следующий код в R -

> library(stringr)
> library(readr)
> 
> myFile = readLines(file.choose())
> 
> myResult = list() 
> 
> vars = c(which(str_detect(myFile, "^\\[.*\\]\\s*$") == T), length(myFile))
> 
> for(i in 1:(length(vars)-1)){
+   myData = myFile[vars[i]:(vars[i+1]-1)]
+ #remove lines that are comments or blank
+ myData = myData[!str_detect(myData, "^\\s*#|^\\s*$")]
+ 
+ #if content is a list of variables, create them as a list
+ if(str_detect(myData[2],"=")){
+   content = str_split(myData[-1],"=")
+   result = lapply(lapply(content,"[",2), parse_guess)
+   names(result) = sapply(content,"[",1)
+ } else{
+   #if the content just a vector of data, extract it
+   result = parse_guess(myData[-1])
+ }
+ #create the variable as a list item and assign the content 
+ myResult[[str_remove_all(myData[1], "\\[\\]")]]=result
+ }
> 
> 
> myFile = myResult$`[specdata0]`
> 
> myFile=myFile[1:(myResult$`[specchannel0]`$fRPMmean*4/myResult$`[specchannel0]`$dF)]
> 
> View(myFile)
>

myFile имеет данные следующим образом - image myFile

Я хочу разделить эти данные на группы по 500 человек.

Как я могу это сделать?

Спасибо

1 Ответ

0 голосов
/ 13 марта 2020

Если вы хотите использовать процентили или любой другой квантиль, то должна работать функция cut с перерывами, установленными для использования квантилей.

tile <- 100  # percentile. tile <- 5 gives quintiles
myFile$Q500 <- cut(myFile$V1, breaks=quantile(myFile$V1, probs = seq(0,1,1/tile), include=TRUE))

> head(myFile)
                 V1                  Q500
    1 -7.183715e-04 (-0.000736,-0.000698]
    2  8.321956e-04    (0.000816,0.00085]
    3  1.056979e-03      (0.00105,0.0011]
    4  7.017239e-04   (0.000679,0.000723]
    5  2.547699e-03     (0.00237,0.00407]
    6  7.163038e-06  (-1.28e-05,9.48e-06]
___

Данные:

set.seed(123)
myFile <- data.frame(V1=rnorm(4031, 0, 0.001)) 
...