2

卵調査のデータを分析しています。データは北海のさまざまな地点から入手でき、いくつかの観測所は異なる日付で二重に記録されています。海は 0.5 x 0.5 度の正方形で覆われている必要があります。まだ解決策が見つからない 2 つの質問があります。

  1. ポイントを重複した場所と異なる日付で平均値に置き換えるにはどうすればよいですか? 重複を削除する方法、またはそれらを最大または最小に置き換える方法は知っていますが、平均を計算する方法が見つかりませんでした。

  2. 隣接するセルに基づいて、欠落しているポイントの補間値を計算するにはどうすればよいですか。補間値は、少なくとも 2 つの記録されたポイントが隣接している場合に限り、長く計算する必要があります。

グリッドを設定してみましたが、補間するときと補間しないときを R に伝える方法が見つからなかったため、あまりうまくいきませんでした。

サンプルデータ:

egg_data <- structure(list(Latitude = c(54.25, 54.25, 54.25, 54.25, 54.25, 
54.25, 54.25, 54.25, 54.25, 54.25, 54.25, 54.25, 54.25, 54.25, 
55.25, 55.25, 55.25, 55.25, 55.25, 55.25, 55.25, 55.25, 55.25, 
55.25, 55.25, 55.25, 55.25, 55.25, 55.25, 55.25, 55.25, 55.25, 
55.25, 55.25, 55.25, 55.25, 55.25, 55.25, 55.25, 55.25, 55.25, 
55.25, 55.25, 55.25, 54.25, 54.25, 54.25, 53.25, 58.25, 57.75, 
57.25, 57.25, 57.25, 57.25, 57.25, 57.25, 57.25, 57.25, 56.75, 
56.75, 56.75, 56.75, 56.75, 56.75, 56.75, 56.75, 56.75, 56.75, 
56.75, 56.75, 56.75, 56.25, 56.25, 56.25, 56.25, 56.25, 56.25, 
56.25, 56.25, 56.25, 56.25, 56.25, 56.25, 56.25, 56.25, 56.25, 
56.25, 56.75, 56.75, 56.75), Longitude = c(6.25, 5.25, 5.25, 
4.25, 4.25, 3.25, 3.25, 2.25, 2.25, 1.25, 1.25, 0.25, 0.25, 0.25, 
0.25, 0.25, 0.25, 0.25, 1.25, 1.25, 2.25, 2.25, 3.25, 3.25, 4.25, 
4.25, 5.25, 5.25, 5.25, 5.25, 4.25, 4.25, 3.25, 3.25, 2.25, 2.25, 
1.25, 1.25, 0.25, 0.25, 0.25, 0.25, 1.25, 1.25, 0.25, 0.25, 0.25, 
0.25, 3.25, 3.25, 3.25, 2.75, 2.25, 1.75, 1.25, 0.75, 0.25, 0.25, 
0.25, 0.25, 0.75, 1.25, 1.75, 2.25, 2.75, 3.25, 3.75, 4.25, 4.75, 
5.25, 5.75, 6.25, 5.75, 5.25, 4.75, 4.25, 3.75, 3.25, 2.25, 1.75, 
1.25, 0.75, 0.25, 0.25, 0.75, 1.25, 1.75, 1.75, 1.25, 0.75), 
    Eggs = c(9L, 6L, 4L, 20L, 57L, 14L, 35L, 18L, 4L, 1L, 3L, 
    100L, 1L, 201L, 0L, 51L, 52L, 23L, 19L, 4L, 5L, 23L, 11L, 
    18L, 7L, 7L, 14L, 6L, 3L, 4L, 20L, 13L, 19L, 5L, 16L, 23L, 
    28L, 11L, 9L, 12L, 19L, 62L, 6L, 3L, 15L, 110L, 57L, 0L, 
    14L, 3L, 3L, 8L, 94L, 62L, 7L, 19L, 511L, 59L, 283L, 308L, 
    20L, 44L, 61L, 24L, 10L, 10L, 15L, 6L, 8L, 12L, 32L, 2L, 
    5L, 10L, 21L, 4L, 1L, 19L, 3L, 4L, 4L, 17L, 51L, 108L, 1213L, 
    132L, 4L, 0L, 0L, 0L)), .Names = c("Latitude", "Longitude", 
"Eggs"), class = "data.frame", row.names = c("1", "2", "3", "4", 
"5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", 
"16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", 
"27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", 
"38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", 
"49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", 
"60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70", 
"71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81", 
"82", "83", "84", "85", "86", "87", "88", "89", "90"))

どうもありがとうございました!!

4

1 に答える 1

1

場所ごとに係数を追加

Egg_data <- within(egg_data, Location <- paste("(", Latitude, ", ", Longitude, ")", sep = "") )

編集: すぐにプロセスを元に戻したいので、これについて空想する意味はありません。

egg_data <- within(egg_data, 
  Location <- paste(Latitude, Longitude, sep = ",")
)

次に、平均を取得する方法がたくさんあります。

means_by_location <- with(egg_data, tapply(Eggs, Location, mean))

また

library(plyr)
means_by_location2 <- ddply(egg_data, .(Location), summarise, Mean.eggs = mean(Eggs))

また

means_by_location3 <- aggregate(Eggs ~ Location, egg_data, mean)

また

means_by_location4 <- with(egg_data, by(Eggs, Location, mean))

編集: 次のビットでは、結果をデータ フレームに格納する必要があるため、方法 2 または 3 を使用します。

緯度と経度を新しいデータセットに追加します。(これを行う方法はたくさんあります。)

lat_long <- strsplit(means_by_location2$Location, ",")
means_by_location2$Latitude <- sapply(lat_long, function(x) x[1]) 
means_by_location2$Longitude <- sapply(lat_long, function(x) x[2])

これはあなたの最初の質問です。


2 番目の質問については、もう少し考える必要があります。場所ごとの卵のプロットを見てください。

library(ggplot2)
(p <- ggplot(means_by_location2, aes(Longitude, Latitude, colour = log10(Mean.eggs  +1))) +
  geom_point() +
  scale_colour_gradient(low = "#FFFFFF", high = "#0000FF", space = "Lab")
)

北から南へ、東から西へ、または隣接するすべてのポイントで内挿していますか? さまざまな可能性があり、さまざまな答えがあるかもしれません。どの補間が最適かを判断するのは簡単ではありません。

于 2011-10-26T13:18:07.923 に答える