如何使用得分数据计算可变数量列的平均变化

问题描述 投票:-1回答:1

我试图找到重复测量的分数的平均差异。问题是,并非每次观察都经常以不均衡的方式测量,而列中的值代表6分制的分数。

数据以长格式和宽格式呈现,如下所示:

ID    Type    M1    M2    M3    M4    M6
1      A       5     5    3
2      A       4     3    1
3      A       2     5    3     5      5
4      C       5     4    4     3
5      B       3 
6      F       4     2    3     4      1

这是替代格式:

ID    Type    M    Score
1       A     1      5
1       A     2      5
1       A     3      3
2       A     1      4
2       A     2      3
2       A     3      1
4       C     1      5
4       C     2      4
4       C     3      4
4       C     4      3

我对临时值并不是很感兴趣,但我需要M1之间的区别,不管是该ID的最后一次测量,我需要考虑这些差异的平均值。我将需要跨所有类型执行此操作,然后按类型细分。

安装的软件包有:dplyr,purrr,stringr,tydir,tibble,data.table

我得到的最接近的是:

df %>% group_by(M)%>%
    arrange(M)%>%
    summarize(avg = as.numeric(mean(diff(Score))), sd = 
as.numeric(sd(diff(Score))))

df %>% group_by(Type)%>%
    arrange(M)%>%
    summarize(avg = as.numeric(mean(diff(Score))), sd = 
as.numeric(sd(diff(Score))))

这是在Long格式数据上完成的,并给出了结果:

       M           avg       sd
     <fctr>       <dbl>    <dbl>
 1            1          NA       NA
 2            2          NA       NA
 3            3 -0.03370787 1.741534
 4            4 -0.04878049 2.036556
 5            5 -0.18181818 1.887760
 6            6  0.00000000 1.095445
 7            7         NaN       NA
 8            8         NaN       NA
 9            9         NaN       NA
10         <NA> -0.16666667 1.722401

上表取自我的分析,与示例表无关。 NA和NaN是一个问题,因为我知道某些部分中有数据,但它无法计算平均差异。

r
1个回答
0
投票

每个avgID的一个解决方案可以是使用基于OP反馈的dplyr来计算第一次和最后一次测量的差异的平均值。

library(dplyr)

df %>% group_by(ID) %>%
  arrange(M) %>%
  summarise(avg = abs(first(Score) - last(Score))/n())

#Result
#     ID   avg
#  <int> <dbl>
#1     1 0.667
#2     2 1.00 
#3     4 0.500

每个average的实际SDID可以计算如下:

df %>% group_by(ID) %>%
  arrange(M) %>%
  summarise(avg = mean(Score), SD = sd(Score))

#Result
     ID   avg    SD
  <int> <dbl> <dbl>
1     1  4.33 1.15 
2     2  2.67 1.53 
3     4  4.00 0.816 
© www.soinside.com 2019 - 2024. All rights reserved.