大佬教程收集整理的这篇文章主要介绍了在多列中查找/分配平均值,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图为我的研究中的参与者提供 20 个问题分量表的平均值。我首先使用以下代码将字符串响应(例如“从不(零次)”、“很少(一次或两次)”等)转换为 1 到 5 个数字输出:
dataset.clean1$Q11_22 <- revalue(dataset.clean1$Q11_22,c("Never (zero occasions)" = "1","Rarely (one or two occasions)" = "2","Multiple times (three or more occasions)" = "3","Regularly (at least once every 1-3 months)" = "4","Weekly (at least once a week)" = "5"))
我对每个问题都做了 20 次(我知道这可能是最不优雅的方法,但目前我只知道这)。
现在我试图让每个参与者在 Q11_22 到 Q32_43 之间取得平均值,并让 R 跳过任何空白/空行。我尝试了以下操作(并非所有 20 列都包含在内,因此我可以快速测试):
ave.exposure <- dataset.clean1$ave.exposure <- mean(dataset.clean1$Q11_22,dataset.clean1$Q12_23,dataset.clean1$Q13_24,na.rm=TRUE)
我收到以下错误:
警告信息:在 mean.default(dataset.clean1$Q11_22,:argument is not numeric or logical: returns NA
现在我对两件事感到困惑:
" "
代替:
dataset.clean1$Q11_22 <- revalue(dataset.clean1$Q11_22,c("Never (zero occasions)" = 1
所以有两个步骤:
将所有因子列转换为数字 (Link)
对数字列求平均值(Q11_22 到 Q32_43)
# Step 1. I assume that your columns are all together
library(tidyverse)
dataset.clean1 <- dataset.clean1 %>%
mutate_at(vars(Q11_22:Q32_43),function(x) as.numeric(levels(x))[x])
# Step 2. Averaging over the columns
# I also assume that you have other columns in the dataset
# which you do not want to delete
start_col <- which(names(dataset.clean1),"Q11_22")
end_col <- which(names(dataset.clean1),"Q32_43")
# Specifying the vector of columns you want to row-average over
indices = c(start_col:end_col)
dataset.clean1 <- dataset.clean1 %>%
mutate(average_of_20qn = apply(.[,indices],MARGIN=1,FUN=mean))
以上是大佬教程为你收集整理的在多列中查找/分配平均值全部内容,希望文章能够帮你解决在多列中查找/分配平均值所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。