R 如何将函数应用于多个列,然后生成平均值?
我有一个如下所示的数据集。对于这个数据集,我有一个函数,它为一列创建一个值。我的问题是如何将此函数应用于coulmns 2到2536,然后取所有结果的平均值R 如何将函数应用于多个列,然后生成平均值?,r,rstudio,R,Rstudio,我有一个如下所示的数据集。对于这个数据集,我有一个函数,它为一列创建一个值。我的问题是如何将此函数应用于coulmns 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(
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))
}
ids V1 V2 V3 V4。。。。。。
12 1 2 NA
13 2 1 3 1
18 NA 2 3 3
191 NA 1
像这样的东西
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
首先,构建您的功能:
my_func <- function(x) x*2
希望有帮助 mean
对于每列或所有列2:2536
?您试图从哪本手册获得答案,但失败了?请编辑问题并显示该类型的努力。如果有关于Stackoverflow的问题显示了类似的链接,并解释一下为什么它不适合你。
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