【问题标题】:Use cases with higher value on one variable for each case of another variable in R对于 R 中另一个变量的每个案例,一个变量的值较高的用例
【发布时间】:2020-03-04 20:24:39
【问题描述】:

我正在 R 中进行荟萃分析。对于每项研究(变量 StudyID),我有多个效应量。对于某些研究,根据受试者之间的熟悉程度(可变熟悉度),我多次具有相同的效果大小。

head(dat)
   studyID A.C.Extent Visibility Familiarity p_t_cov group.size same.sex  N published
1       1        3.0        5.0           1  0.0462          4        0  44         1
2       1        5.0        2.5           1  0.1335          4        0  44         1
3       1        2.5        3.0           1 -0.1239          4        0  44         1
4       1        2.5        3.5           1  0.2062          4        0  44         1
5       1        2.5        3.0           1 -0.0370          4        0  44         1
6       1        3.0        5.0           1 -0.3850          4        0  44         1

这些是数据集的第一行。总共有50多项研究。大多数研究看起来像研究 1,对于所有效应量,“熟悉度”中的值相同。在一些研究中,存在具有多个熟悉程度的效应量。例如,如下所示的研究 36。

head(dat)
      studyID A.C.Extent Visibility Familiarity p_t_cov group.size same.sex  N published
142      36        1.0        4.5           0  0.1233       5.00        0  311         1
143      36        3.5        3.0           0  0.0428       5.00        0  311         1
144      36        1.0        4.5           0  0.0986       5.00        0  311         1
145      36        1.0        4.5           1 -0.0520       5.00        0  311         1
146      36        1.5        2.5           1 -0.0258       5.00        0  311         1
147      36        3.5        3.0           1  0.1104       5.00        0  311         1
148      36        1.0        4.5           1  0.0282       5.00        0  311         1
149      36        1.0        4.5           2 -0.1724       5.00        0  311         1
150      36        3.5        3.0           2  0.2646       5.00        0  311         1
151      36        1.0        4.5           2 -0.1426       5.00        0  311         1
152      37        3.0        4.0           1  0.0118       5.35        0  123         0
153      37        1.0        4.5           1 -0.3205       5.35        0  123         0
154      37        2.5        3.0           1 -0.2356       5.35        0  123         0
155      37        3.0        2.0           1  0.1372       5.35        0  123         0
156      37        2.5        2.5           1 -0.1401       5.35        0  123         0
157      37        3.0        3.5           1 -0.3334       5.35        0  123         0
158      37        2.5        2.5           1  0.0317       5.35        0  123         0
159      37        1.0        3.0           1 -0.3025       5.35        0  123         0
160      37        1.0        3.5           1 -0.3248       5.35        0  123         0

现在,我希望对于那些包含多个熟悉度级别的研究,采用只有一个熟悉度级别的行(两个单独的版本:一个具有较低的熟悉度,一个具有较高的熟悉度)。 我认为使用 dplyr 包可以实现,但到目前为止我还没有真正的代码。

在第二步中,我想为每个熟悉级别赋予这些行唯一的 studyID(因此从研究 36 中创建三个“不同”的研究)。

提前谢谢你!

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    如果您想使用 dplyr,您可以使用 group_indices 创建备用 ID 或 casenum:

    df <- df %>%
      mutate(case_num = group_indices(.dots=c("studyID", "Familiarity")))
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

      library(dplyr)
      
      df %>%
        group_by(studyID) %>%
        mutate(nDist = n_distinct(Familiarity) > 1) %>%
        ungroup() %>%
        mutate(
          studyID = case_when(nDist ~ paste(studyID, Familiarity, sep = "_"), TRUE ~ studyID %>% as.character),
          nDist = NULL
        )
      

      输出:

      # A tibble: 19 x 9
         studyID A.C.Extent Visibility Familiarity p_t_cov group.size same.sex     N published
         <chr>        <dbl>      <dbl>       <int>   <dbl>      <dbl>    <int> <int>     <int>
       1 36_0           1          4.5           0  0.123        5           0   311         1
       2 36_0           3.5        3             0  0.0428       5           0   311         1
       3 36_0           1          4.5           0  0.0986       5           0   311         1
       4 36_1           1          4.5           1 -0.052        5           0   311         1
       5 36_1           1.5        2.5           1 -0.0258       5           0   311         1
       6 36_1           3.5        3             1  0.110        5           0   311         1
       7 36_1           1          4.5           1  0.0282       5           0   311         1
       8 36_2           1          4.5           2 -0.172        5           0   311         1
       9 36_2           3.5        3             2  0.265        5           0   311         1
      10 36_2           1          4.5           2 -0.143        5           0   311         1
      11 37             3          4             1  0.0118       5.35        0   123         0
      12 37             1          4.5           1 -0.320        5.35        0   123         0
      13 37             2.5        3             1 -0.236        5.35        0   123         0
      14 37             3          2             1  0.137        5.35        0   123         0
      15 37             2.5        2.5           1 -0.140        5.35        0   123         0
      16 37             3          3.5           1 -0.333        5.35        0   123         0
      17 37             2.5        2.5           1  0.0317       5.35        0   123         0
      18 37             1          3             1 -0.302        5.35        0   123         0
      19 37             1          3.5           1 -0.325        5.35        0   123         0
      

      【讨论】:

      • 非常感谢!
      猜你喜欢
      • 2021-05-21
      • 1970-01-01
      • 2023-03-08
      • 2015-03-19
      • 1970-01-01
      • 1970-01-01
      • 2015-06-09
      • 1970-01-01
      • 2023-03-28
      相关资源
      最近更新 更多