让我们在著名的iris
数据集上说明问题。我需要按行应用选定的函数,但只能应用于选定的列。示例如下:
library(tidyverse)
iris %>%
mutate_at(.funs = scale, .vars = vars(-c(Species))) %>%
rowwise() %>%
mutate(my_mean=mean(c(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width)))
因此,首先缩放所有变量(不包括
Species
),然后对所有四个数字变量按行计算均值。但是,在实际数据集中,我有100多个数字变量,并且我想知道如何说服R自动包含除选定变量之外的所有变量(例如,给定示例中的Species
)。我介绍了SO的解决方案(例如this),但所有示例都明确引用了列名。任何指针都非常欢迎。编辑:经过一番摸索之后,是我的解决方案:
iris %>%
as_tibble() %>%
mutate_at(.funs = scale, .vars = vars(-c(Species))) %>%
transmute(Species, row_mean = rowMeans(select(., -Species)))
最佳答案
我不确定问题出在哪里,但是这里有一些dplyr解决方案,可以为您提供除所选列以外的所有列的均值:
iris %>%
select(-Species) %>%
mutate(Means = rowMeans(.))
iris %>%
mutate(Means = rowMeans(.[,1:4]))
iris %>%
mutate(Means = rowMeans(.[,-5]))
第一个是唯一从返回中消除所选列的字段。希望其中之一可以帮助您。