Новый столбец, который равен 1-n для каждого нового уровня фактора - PullRequest
0 голосов
/ 28 ноября 2018

Я ищу совет о том, как добавить столбец к фрейму данных, который для каждого факторного уровня учитывает от 1 до n числа факторов на этом уровне.Вот пример, с которым я работаю.

collatzRule <- function(m){
    if ( m %% 2 == 0) {
        return(m/2)
  } else {
        return(3*m + 1)
  }
}

collatz <- function(n, limit = 1000000000) {
  # collatz numbers will go in this vector
  numbers <- numeric(limit)
  # keep count of how many numbers we have made:
  counter <- 0
  while ( n > 1 & counter < limit) {
    # need to make a new number
    counter <- counter + 1
    # put the current number into the vector
    numbers[counter] <- n
    # make next Collatz number
    n <- collatzRule(n)
  }
  # find how many Collatz numbers we made:
  howMany <- min(counter, limit)
  # print them out:
  print(numbers[1:howMany])
}

datalist = list()

for (i in 2:100) {
    # ... make some data
    dat <- collatz(i) %>% as.data.frame()
    dat$i <- i %>% as.factor() # maybe you want to keep track of which iteration produced it?
    datalist[[i]] <- dat # add it to your list
}

big_data = do.call(rbind, datalist)

Это создает фрейм данных, который выглядит следующим образом:

    .   i 
1   2   2       
2   3   3       
3   10  3       
4   5   3       
5   16  3       
6   8   3

Я хочу добавить столбец, который выглядит следующим образом.

    .   i   x
1   2   2   1   
2   3   3   1   
3   10  3   2   
4   5   3   3   
5   16  3   4   
6   8   3   5

Любая помощь будетс благодарностью!

С наилучшими пожеланиями,

...