こんにちは私はプログラミングの世界とデータサイエンスにも非常に慣れていないので、それを乗り越えようとしています。
データフレームの列に値を割り当てようとしていますが、forループを使用して、データフレームが10のグループに分割され、すべてのグループのすべての行にランクが割り当てられ、行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のサブセット関数ではありません
前もって感謝します !!
ループではなく、ベクトル化された計算を使い始める方がよい場合があります。これは将来あなたを助けるでしょう。
例えば:
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
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加