R中的新内容,我需要行

时间:2016-02-26 03:53:17

标签: r

我是R的新手,我有以下问题: 我正在使用的数据框架超过3000个障碍物和6个变量。

     [PLOT] [SPP]   [tree] [BA] [...] []
[1]     2     A       1       3
[2]     2     B       2       2
[3]     2     C       3       5
[4]     3     A       1       4
[5]     3     C       2       7
[6]     4     B       1       4
[7]     4     D       2       5

[PLOT]和[SPP]是因子,[BA]是数字 我正在使用:

data1 <- ddply(data,c('PLOT','SPP'),summarise,BAtotal = sum(BA,na.rm=TRUE))

但是我想要另一个col:每个SP和每个情节的%BA。怎么可能呢?可以用sapply吗?

由于

1 个答案:

答案 0 :(得分:0)

我们可以使用mutate代替summarise

library(plyr)
ddply(data,c('PLOT','SPP'),mutate,BAtotal = sum(BA,na.rm=TRUE))

注意仅当“数据”为data.frame而非matrix时,此选项才有效。 OP的数据似乎是matrix。在这种情况下,请转换为data.frame

data <- as.data.frame(data)

在运行ddply代码之前。

除了上面的代码,我们还可以使用dplyr方法(应该更快)

library(dplyr)
data %>%
    group_by(PLOT, SPP) %>%
    dplyr::mutate(BAtotal = sum(BA, na.rm=TRUE))

data.table

library(data.table)
setDT(data)[, BAtotal := sum(BA, na.rm=TRUE), by = .(PLOT, SPP)]