R聚合具有功能的数据框

R Aggregate data frame with a function

对于这个数据框,我想总结 "inf" 列中的信息,为每个 id 级别提取“1”的百分比:

d <- "
    id        var iso exp rep pl inf nles 
    BM_1_1_1   B   M   1   1  1   1   19   
    BM_1_1_2   B   M   1   1  2   1   50
    BM_1_1_3   B   M   1   1  3   1   18
    BM_1_2_1   B   M   1   2  1   0    1
    BM_1_2_2   B   M   1   2  2   1   30
    BM_1_2_3   B   M   1   2  3   1   38
    BM_1_3_1   B   M   1   2  1   1    1
    BM_1_3_2   B   M   1   2  2   0    0
    BM_1_3_3   B   M   1   2  3   0    0 
"

d <- read.table(text=d, header = TRUE, check.names = F)

我想通过 "new column"

获得这个新的聚合数据框
id        var iso exp rep pl inf nles newcolumn
BM_1_1_1   B   M   1   1  1   1   19     100
BM_1_2_1   B   M   1   2  1   0    1      66
BM_1_3_1   B   M   1   2  1   0    1      33

有人可以帮我吗? 提前致谢!

你的问题,正如它目前所说的那样,没有反映出所需的输出。话虽如此,如果您创建一个 new_id 列,您可以通过 aggregate() 计算您的 new_column 并将其传递给一个函数。如果您的 inf 列是二进制的(即严格为 1 和 0),则此方法有效:

d$new_id <- substr(d$id, 1, 6)
d$new_column <- aggregate(data = d, inf ~ new_id, function(x) mean(x) * 100)