对于这个数据框,我想总结“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)
我想通过“新列”获取这个新的聚合数据框
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
有人可以帮我吗? 提前谢谢!
答案 0 :(得分:2)
您的问题,正如其目前所述,并未反映所需的输出。话虽如此,如果您创建new_id
列,则可以通过new_column
计算aggregate()
并将其传递给函数。如果您的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)