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)
对于这个数据框,我想总结 "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)