r - 使用 mutate() dplyr 计算平均值时出错
问题描述
我想用 mutate() 在我的 df 中创建一个新变量作为其他几个变量的平均值。
我尝试了以下方法
df <- df %>%
na.omit() %>%
mutate(mot_avg = rowMeans(cbind(mot1:mot13)))
和
df <- df %>%
na.omit() %>%
rowwise %>%
mutate(mot_avg = mean(c(mot1:mot13)))
和
df <- df %>%
rowwise %>%
mutate(mot_avg = mean(c(mot1:mot13),na.rm=T))
都导致以下错误:
Error in mutate_impl(.data, dots) :
Evaluation error: missing value where TRUE/FALSE needed.
我不明白;如果使用 na.omit() 或 na.rm=T,怎么会有缺失值。如果我在较小的示例 df 上尝试代码,它可以正常工作。这也是为什么我不能在这里给出一个可重现的例子的原因。
只有当我在我的 df 上使用 baseR 代码时,我才能用我的 df 得到我想要的。
df$mot_avg <- rowMeans(df[,1:14],na.rm=T)
有任何想法吗?
解决方案
为什么不将这两种方法结合起来呢?
library(tidyverse)
#Fake Data
set.seed(3)
x <- bind_cols(lapply(1:10, function(i)rnorm(n = 100, mean = 20)))
##For all variables
first_solution <- x %>% mutate(x = rowMeans(x))
##For a subset of variables
solution_subset <- x %>% mutate(x = rowMeans(x %>% select(V9,V10)))
推荐阅读
- java - 如何让 PDFTextStripper 逐行提取文本?
- python - 为什么我在我的项目 python 速成课程中看不到主题
- r - 在 R 中处理数据
- ruby-on-rails - rspec - 如何测试 ActiveRecord::RecordNotFound?
- octave - 什么是八度“find()”?
- struct - Rust 中结构的字段可变性
- reactjs - 当状态在 React 中使用钩子更新时,如何从数组中的对象中提取数据?
- c# - 无法找出调用 WriteLine() 的语法错误
- javascript - 如何将地理标记的 Flickr 照片添加到传单
- c - 动态分配问题中数组的大小