に結果を格納、私は次のdf作成しました:私のタスク1列に同じ値に基づいてループして私の問題を説明するために、新たなデータフレーム
hh_01 <- c(rep(1:4, each = 3), rep(5:10, each = 5))
vill <- c(rep(100, 12), rep(101, 30))
hh_02 <- c(2:4, 1, 3, 4, 1:2, 4, 1:3, 6:10, 5, 7:10, 5:6, 8:10, 5:7, 9:10, 5:8, 10, 5:9)
set.seed(1); dist <- abs(rnorm(42, mean = 0, sd = 1000))
df <- matrix(c(hh_01, vill, hh_02, dist), nrow = 42, ncol = 4)
colnames(df) <- c("hh_01", "vill", "hh_02", "dist")
df <- as.data.frame(df)
df
hh_01 vill hh_02 dist
1 1 100 2 1728.39791
2 1 100 3 979.05280
3 1 100 4 972.09301
4 2 100 1 461.72457
5 2 100 3 384.84236
6 2 100 4 523.10665
7 3 100 1 482.88891
8 3 100 2 218.27501
9 3 100 4 878.32424
10 4 100 1 41.75679
11 4 100 2 967.72103
12 4 100 3 661.80881
13 5 101 6 851.74364
14 5 101 7 852.48595
15 5 101 8 471.51824
16 5 101 9 862.90742
17 5 101 10 750.57410
18 6 101 5 1714.03797
19 6 101 7 93.43975
20 6 101 8 640.15912
21 6 101 9 601.66437
22 6 101 10 969.44271
23 7 101 5 77.95871
24 7 101 6 604.71114
25 7 101 8 169.18386
26 7 101 9 435.42663
27 7 101 10 604.22278
28 8 101 5 475.18935
29 8 101 6 13.09895
30 8 101 7 2873.04565
31 8 101 9 1019.03810
32 8 101 10 41.51445
33 9 101 5 914.63453
34 9 101 6 67.62432
35 9 101 7 85.45653
36 9 101 8 971.21044
37 9 101 10 2074.87280
38 10 101 5 98.43913
39 10 101 6 437.63773
40 10 101 7 620.47573
41 10 101 8 376.56226
42 10 101 9 1013.93106
を:同じ値を持つすべてのhh_01を計算するためにDISTの平均、以下の構造を持つ新しいDFに結果を保存します。
hh_01 vill mean_dist
1 100 1226.515
2 100 .......
は私が(多分、または代わりにsapply/lapply
または)for
ループを使用する必要があります知っているが、私は、このコマンドを終了する方法を知っているドント...
for (i in seq(along=df[,df$hh_01])){
ifelse(df$hh_01[i] == df$hh_01[i+1])
}
が、この分野ではないプログラマとかなり新しいの - 私...) 私は任意の助けをいただければ幸いです。 コードがシンプルになればなるほど、私にとってはより良いものになります(簡単な説明をお願いします)。私はこの種のループ(または一般的なループ)を理解したいと思っています。なぜなら、この種の質問を将来頻繁に処理しなければならないからです。 ありがとうございます。
あなたがサンプルデータを提供することをいいますが、それが基づいて値のランダム生成のため、常に変化と。一定の結果を提供するには、 'set.seed = 1234'のようなものを使用してください。 – epi99
が変更されました。あなたのメモに感謝します。 – Mapos