5
我想爲多列中的多個值提取一些摘要統計信息。我的數據看起來如下如何獲取每個唯一ID的摘要
id pace type value abundance
51 (T) (JC) (L) 0
51 (T) (JC) (L) 0
51 (T) (JC) (H) 0
52 (T) (JC) (H) 0
52 (R) (JC) (H) 0
53 (T) (JC) (L) 1
53 (T) (JC) (H) 1
53 (R) (JC) (H) 1
53 (R) (JC) (H) 1
53 (R) (JC) (H) 1
54 (T) (BC) <blank> 0
54 (T) (BC) <blank> 0
54 (T) (BC) <blank> 0
,我希望這樣的事情
id ptype (T) (R) (L) (H) abundance
51 (JC) 3 0 2 1 0
52 (JC) 1 1 0 2 0
53 (JC) 2 3 1 4 1
54 (BC) 3 0 0 0 0
我已經開始寫一些代碼:
for (i in levels(df$id))
{
extract.event <- df[df$id==i,]# To identify each section
ppace <- table(extract.event$pace) #count table of pace
ptype <- extract.event$type[1] # extract the first line to be the type
nvalues <- table(extract.event$value) #count table of value
nabundance <- min(extract.event$abundance) #minimum of abundance
d <- cbind(ppace,ptype,forbeh,nvalues,nabundance)
,但我遇到了合併值問題,尤其是當nabundance打印出一張空白表格時。我不想按名稱提取,因爲數據框中有很多名字。有任何想法嗎?我想這可能是是與plyr包,但仍不能確定......
感謝,
格雷斯
查看編輯其中第2部分與您所需的數據幀輸出類似 –
'聚合(cbind(value,pace,abundance)〜id + type,data = lapply(df,as.character),table)似乎幾乎得到有一點容易 – user2957945
這是一個整齊的代碼行,但你會注意到一旦你增加丰度,你處理0和1的計數。另外,聚合實際上留下了一個矩陣的數據框在裏面。 Part1在as.list聚合對象上使用do.call + cbind來使名稱更清晰(如問)和正確格式化(簡單的data.frame)。第二部分(雖然看起來醜陋)只是迫使事情看起來像OP問。我確實喜歡使用cbind,+1 –