【问题标题】:summarise() giving empty outputsummarise() 给出空输出
【发布时间】:2021-03-03 03:04:36
【问题描述】:

我试图给我的调查的每个受访者一个特定分量表的平均分数。

示例数据(5 名参与者回答 3 个子量表问题):

set.seed(42)  ## for sake of reproducibility
n <- 5
data <- data.frame(id=1:n, 
              Q1= c(5 3,5,2,5),
              Q2= c(7,4,NA,2,5),
              Q3= c(1,2,2,NA,4)

我正在使用以下代码创建一个包含每个参与者平均值的数据框,但是当我这样做时,输出为空,从而产生一个表格,其中一个单元格读取为 NA。

library(dplyr) 
detach(package::plyr)
test.question <- data %>%
group_by(id) %>%
summarise(ave.score = mean(c(Q1, Q2, Q3))) 

按照同事的建议,我的朋友建议我分离 plyr,但问题仍然存在。如何获得正确的摘要,其中在第一列中列出参与者 ID,在下一列中列出他们的平均分数?

【问题讨论】:

    标签: r


    【解决方案1】:

    如果是按行均值,请使用rowMeansrowwise。如果plyrdplyr都加载了,可以通过::将函数指向具体包来解决屏蔽

    library(dplyr)
    data %>%
      rowwise %>%
      dplyr::summarise(id, ave.score = mean(c(Q1, Q2, Q3), na.rm = TRUE), 
              .groups = 'drop') 
    

    另一个选项也是c_across

    data %>%
      rowwise %>%
      dplyr::summarise(id, ave.score = mean(c_across(starts_with('Q')), 
                na.rm = TRUE), .groups = 'drop')
    

    【讨论】:

      猜你喜欢
      • 2018-04-30
      • 2018-04-04
      • 2021-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-09
      • 1970-01-01
      相关资源
      最近更新 更多