程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在多列中查找/分配平均值大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决在多列中查找/分配平均值?

开发过程中遇到在多列中查找/分配平均值的问题如何解决?下面主要结合日常开发的经验,给出你关于在多列中查找/分配平均值的解决方法建议,希望对你解决在多列中查找/分配平均值有所启发或帮助;

我试图为我的研究中的参与者提供 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

现在我对两件事感到困惑:

  1. 我是否需要在第 1 步(例如
" "

代替:

dataset.clean1$Q11_22 <- revalue(dataset.clean1$Q11_22,c("Never (zero occasions)" = 1
  1. 我如何(以一种易于理解的方式,无论多么乏味)找到所有这些列中每个参与者的平均值?

解决方法

所以有两个步骤:

  1. 将所有因子列转换为数字 (Link)

  2. 对数字列求平均值(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,请注明来意。
标签: