您好,我对编程界和数据科学领域也很陌生,我正在尝试自己的方法。
我正在尝试为数据帧中的列分配值,并使用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。子集是数据帧名称,而不是R中的子集函数
预先感谢!
答案 0 :(得分:0)
怎么样呢?
subset$Rank <- ceiling(as.numeric(rownames(subset))/10)
as.numeric将行名转换为数字,将其除以10,然后四舍五入应该可以满足您的需求?让我知道我是否误会了。
答案 1 :(得分:0)
开始使用矢量化计算而不是循环可能会更好。这将为您将来提供帮助。
例如:
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