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
你好,我对编程世界和数据科学也很陌生,我正在努力通过它。
我正在尝试为数据框中的列赋值并使用 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