我有一个数据集,如下所示。对于此数据集,我有一个函数,该函数为列创建一个值。我的问题是如何将此函数应用于2至2536的库仑,然后取所有结果的平均值。
ids V1 V2 V3 V4 ......
12 1 1 2 NA
13 2 1 3 1
18 NA 2 3 3
19 1 1 NA 1
AI <- function(AI) {
((sort(table(AI),decreasing=TRUE)[1])-0.5*
(sum(!is.na(AI))
- (sort(table(AI),decreasing=TRUE)[1]))) /sum(!is.na(AI))
}
答案 0 :(得分:0)
像这样吗?
library(tidyverse)
df=read_table("ids V1 V2 V3 V4
12 1 1 2 NA
13 2 1 3 1
18 NA 2 3 3
19 1 1 NA 1")
df %>%
select(contains('V')) %>%
mutate_at(vars(contains('V')),funs( (.-0.5*sum(.,na.rm = T))/sum(.,na.rm = T) )) %>%
replace(is.na(.),0) %>% as.matrix() %>%
mean
答案 1 :(得分:0)
首先,构建您的功能:
my_func <- function(x) x*2
然后使用dplyr
库:
library(dplyr) # a part of tidyverse
df %>%
mutate_at( vars(2:5), my_func ) %>% # apply my_func to columns 2 to 5
summarise_all( mean, na.rm = T) # apply mean to all columns
# ids V1 V2 V3 V4
# 15.5 2.666667 2.5 5.333333 3.333333
希望有帮助!