我有一個數據集raw.data.2010
需要幾個步驟與不同動物物種進行子集化。我也需要在每個過濾過程後對其進行相應的命名。我寫了一個簡單的代碼如下:R,用字符過濾(子集)數據並相應地分配名稱?
#Creating reproducible data######
site=rep(list("Q", "R", "S", "T"), each=500)
grid=sample(1:2, size=2000, replace=TRUE)
spp=rep(list("A", "B", "C", "D", "E"), each=400)
fate=sample(1:5, size=20000, replace=TRUE)
sex=rep(list("M","F"), each=2000)
weight=sample(85:140, size=2000, replace=TRUE)
raw.data=as.data.frame(cbind(site, grid, spp, fate, sex, weight))
### main codes#####
spp=c("A", "B", "C", "D", "E")
for (i in spp){
name=paste(i, "raw", sep=".", collapse="")
filter=paste("select",i, sep="", collapse="")
assign(filter, raw.data$spp==i)
assign(name, raw.data[get(filter),])
}
我檢查了過濾器,他們工作沒有問題。但最後一行不起作用,所以我調用的所有子集數據都返回NA
。什麼問題?謝謝。
編輯:你好,謝謝大家的意見。我編輯了我的代碼,使其具有可重複性。基本上我想先用spp
過濾我的raw.data
。然後,我可以繼續添加更多的過濾器,按照site
,grid
,fate
等分組。我需要能夠單獨訪問過濾的數據,以便我可以操作它們以備後用,例如。計算不同性別或年齡組的體重和其他測量值。我希望能夠稍後致電A.raw
,A.Q.data
。根據我的需求
因爲我想分析我的數據在不同層次(如人口水平,個人層面上,網站/格水平),並且能夠彙集/分割。這是此代碼的目的。希望我的解釋不會混淆你。
如果你犯了一個[重複的例子(http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-可重現的例子),這表明你的問題/問題,我們會發現它更容易回答。 – Andrie
我強烈懷疑你會更喜歡做'split(raw.data.2010,raw.data.2010 $ Spp)' - 但我強烈支持@ Andrie對可複製數據的建議,以及一點點更多的上下文:一旦你創建它們,你將如何處理派生變量? –
我通過添加可重現的數據框來編輯我的代碼,並且還添加了我的研究目的的更多解釋。 – lamushidi