我希望能够提取多列数值的一些摘要统计信息。我的数据如下:
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包有关,但仍然不确定...谢谢,Grace。
aggregate(cbind(value, pace, abundance) ~ id + type, data=lapply(df, as.character), table)
看起来似乎更容易实现。 - user2957945do.call(...
。从那里开始,对于丰度的预期结果似乎是如果一个ID有任何值,则为1
,否则为零,因此通过分离丰度来获得这将很容易。(PS我认为你可以使用do.call(data.frame
) - user2957945