此問題是從earlier post開始的延續,但是添加了不同的數據集和更多細節。跨子目錄工作
我想引導飲食項目的比例出現7個人和計算一個sd()使用下面的數據。
data <- structure(list(IndID = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L,
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L,
6L, 6L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L), .Label = c("P01",
"P02", "P03", "P04", "P05", "P06", "P07"), class = "factor"),
PreyGen = structure(c(1L, 1L, 1L, 1L, 6L, 5L, 4L, 5L, 4L,
4L, 4L, 4L, 4L, 5L, 5L, 4L, 5L, 4L, 5L, 5L, 5L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 5L, 5L, 4L, 5L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 3L, 5L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L, 2L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
5L, 2L, 4L, 3L, 4L, 4L, 4L, 3L, 4L, 4L, 3L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 1L, 4L, 1L, 5L, 4L, 5L, 4L, 4L, 4L, 5L, 4L,
4L), .Label = c("Beaver", "Bobcat", "Coyote", "Deer", "Elk",
"Raccoon"), class = "factor")), .Names = c("IndID", "PreyGen"
), class = "data.frame", row.names = c(NA, -100L))
其中summary
看起來像這樣。
> summary(data)
IndID PreyGen
P01: 6 Beaver : 6
P02:23 Bobcat : 2
P03:12 Coyote : 4
P04:20 Deer :71
P05:21 Elk :16
P06: 7 Raccoon: 1
P07:11
有7個不同的個體(IndID)的同一物種和6種獵物(PreyGen)。每個人以不同的比例吃了不同數量的獵物(這是與之前的帖子的主要區別)。
我的目標是引導每個人每個飲食項目的比例發生。 下面的循環爲每個用替換採樣的個體生成五種飲食。數據存儲爲個人列表,每個列表包含樣本飲食列表。
EDIT加入set.seed()
和滿輸出按比例和樣本大小P01
set.seed(1)
BootIndDiet <- list()
IndTotboot <- list()
for(i in unique(data$IndID)){
for(j in 1:5){
BootIndDiet[[j]] <- prop.table(table(sample(data$PreyGen[data$IndID == i],
length(data$PreyGen[data$IndID == i]),replace = T)))
}
IndTotboot[[i]] <- BootIndDiet
}
自舉飲食是特定於每個單獨的(i)中。下面以P01的五個自舉樣本爲例。
> IndTotboot[[1]]
[[1]]
Beaver Bobcat Coyote Deer Elk Raccoon
0.6666667 0.0000000 0.0000000 0.0000000 0.3333333 0.0000000
[[2]]
Beaver Bobcat Coyote Deer Elk Raccoon
0.8333333 0.0000000 0.0000000 0.0000000 0.1666667 0.0000000
[[3]]
Beaver Bobcat Coyote Deer Elk Raccoon
0.3333333 0.0000000 0.0000000 0.0000000 0.1666667 0.5000000
[[4]]
Beaver Bobcat Coyote Deer Elk Raccoon
0.6666667 0.0000000 0.0000000 0.0000000 0.1666667 0.1666667
[[5]]
Beaver Bobcat Coyote Deer Elk Raccoon
0.8333333 0.0000000 0.0000000 0.0000000 0.1666667 0.0000000
我試圖計算出每個獵物的每一個人的比例發生sd()
。同樣,對於每個人(P01 - P07),我希望在5種日糧中每種獵物的比例出現的sd()
。
當我的循環產生正確的結果時,我想知道當數據包含在嵌套列表中時,如何計算每個獵物物種的引導飲食的sd()
。
我只包括5個樣本(引導程序)爲每個單獨在這裏,而是希望通過@MrFlick
一個例子輸出應該是這樣的
產生10000編輯按建議
P01 P02 P03 P04 P05 P06 P07
Beaver A
Bobcat B
Coyote C
Deer D
Elk E
Raccoon F
其中「A」是P01在所有五個樣品中吃海狸的比例的sd。使用上面的P01的輸出,「A」= sd(0.6666667,0.8333333,0.33333333,0.66666667,0.8333333)。向下移動時,「B」代表所有五個樣本中P01吃掉的山貓比例的sd,以此類推。
在此先感謝。
(-1)這個問題表示與鏈接問題相同的目標。如果這些答案不適合你,你可以提供賞金。 – 2014-09-01 18:43:07
@Richard Scriven,由於我以前的文章缺乏特異性,所以答案奏效。另外,我之前發佈的數據並沒有反映我的真實數據。雖然目標是相同的,但要使用的數據是不同的。國際海事組織鏈接的問題可以被刪除,但指出SO背後的主人會打電話。 – 2014-09-01 18:47:49
你還應該包括你想要的輸出。當使用像'sample'這樣隨機函數結果是可重現的時,它也會有助於使用'set.seed()'。當你說你想要「比例出現的sd」時,這是否意味着你只想爲每個動物的每個動物提供所有值的「sd」?所以對於P01,你會得到所有海狸比例的SD,然後是所有山貓比例的SD?你渴望的結果的「形狀」是什麼? – MrFlick 2014-09-01 19:21:28