For 循环向数据框添加额外的行

For Loop Adding Extra Rows to The Data Frame

你好,我对编程世界和数据科学也很陌生,我正在努力通过它。

我正在尝试为数据框中的列赋值并使用 for 循环,以便将数据框分为十组,并且为每组中的每一行分配一个等级,这样第 1 到 10 行是指定为等级 1,第 11 到 20 行指定为等级 2,依此类推。子集数据集原始维度为100 * 6

我的数据框看起来像 Data Frame

我写的代码是:

   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.

请帮助我了解我在编写循环时哪里出错了。

P.S。 subset 是数据框名称,而不是 R

中的 subset 函数

提前致谢!!

这样的事情怎么样:

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

as.numeric 将行名转换为数字,除以 10 并四舍五入应该可以满足您的需求?如果我误解了,请告诉我。

您最好开始使用矢量化计算而不是循环。这对你以后有帮助。

例如:

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