Для цикла Добавление дополнительных строк в фрейм данных - PullRequest
0 голосов
/ 19 октября 2018

Здравствуйте, я очень новичок в мире программирования и в науке о данных, и я пытаюсь пройти через это.

Я пытаюсь присвоить значения столбцу в фрейме данных и использую цикл for таким образом, чтобы фрейм данных был разделен на десять групп, и каждой строке в каждой группе был присвоен ранг, такой, что строки от 1 до 10присваивается ранг 1 и строки с 11 по 20 назначаются рангом 2 и так далее.Исходный размер набора данных подмножества составляет 100 * 6

Мой фрейм данных выглядит как Фрейм данных

Я написал следующие коды:

   x <- round(nrow(subset) / 10)
   a=1
   for(j in 1:10){
    for(i in a:x){
      subset[i, "rank"] = j
    }
    j = j + 1
    a = x + 1
    x = x * j
    }

Однако цикл выполняется бесконечно и продолжает добавлять дополнительные строки во фрейм данных.Мне пришлось вручную остановить цикл, и результирующее измерение кадра данных подмножества составило 17926 * 6.

Пожалуйста, помогите мне понять, где я ошибаюсь при написании цикла.

Подмножество PS - этоимя фрейма данных, а не функция подмножества в R

Заранее спасибо !!

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Возможно, вам лучше начать работать с векторизованными вычислениями, а не с циклами.Это поможет вам в будущем.

Например:

df <- data.frame(x = 1:100)
df$rank <- (df$x-1)%/%10 + 1
df  

приводит к:

    x rank
1   1    1
2   2    1
3   3    1
4   4    1
5   5    1
6   6    1
7   7    1
8   8    1
9   9    1
10 10    1
11 11    2
12 12    2
13 13    2
14 14    2
15 15    2
16 16    2
17 17    2
18 18    2
19 19    2
20 20    2
21 21    3
22 22    3
23 23    3
24 24    3
25 25    3
0 голосов
/ 19 октября 2018

Как насчет примерно такого:

subset$Rank <- ceiling(as.numeric(rownames(subset))/10)

as.numeric преобразует имя строки в число, делит его на 10 и округляет, что даст вам то, что вам нужно?Дайте мне знать, если я неправильно понял.

...