让我们来说明着名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)))
Run Code Online (Sandbox Code Playgroud)
因此,首先我缩放所有变量,排除Species然后在所有四个数值变量上计算平均行数.但是,在真实数据集中,我有100多个数字变量,我想知道如何说服R自动包含除了所选变量之外的所有变量(例如,Species在给定的例子中).我在SO上讨论解决方案(例如,这个),但所有示例都明确引用了列名.任何指针都非常受欢迎.
编辑:经过一些改变,这是我的解决方案:
iris %>%
as_tibble() %>%
mutate_at(.funs = scale, .vars = vars(-c(Species))) %>%
transmute(Species, row_mean = rowMeans(select(., -Species)))
Run Code Online (Sandbox Code Playgroud)
我不确定我到底发生了什么问题,但是这里有一些替代的dplyr解决方案,它将为您提供除选定列之外的所有列的平均值:
iris %>%
select(-Species) %>%
mutate(Means = rowMeans(.))
iris %>%
mutate(Means = rowMeans(.[,1:4]))
iris %>%
mutate(Means = rowMeans(.[,-5]))
Run Code Online (Sandbox Code Playgroud)
第一个是从返回中删除所选列的唯一一个.希望他们中的一个可以帮到你.
| 归档时间: |
|
| 查看次数: |
1545 次 |
| 最近记录: |