【问题标题】:New variable in long format data based on timepoint in R基于 R 中时间点的长格式数据中的新变量
【发布时间】:2019-11-23 16:56:41
【问题描述】:

我似乎无法找到关于如何在长格式数据帧或基于 R 中的某些行操作的小标题中创建新的(例如)分组变量的答案

使用这个例子:

toosimpledataset_long <- read.table(header=TRUE, text='subject sex Timepoint measurement measurement2 
      1    M       T01         7.9          1.9       
      1    M       T02        12.3          NA
      1    M       T03        10.7          1.7
      1    M       T04         9.7          1.7
      2    F       T01         6.3          1.3
      2    F       T02        10.6          1.6
      2    F       T03        11.1           NA
      2    F       T04        12.5          1.7
      3    F       T01         5.5           NA
      3    F       T02          NA          1.1
      3    F       T03        13.8          1.8
      3    F       T04        15.7          1.7 
      4    M       T01        10.5          1.5
      4    M       T02        13.4          1.4
      4    M       T03        12.4          1.4
      4    M       T04        11.3          1.9    
                           ') 

我想创作

  1. 一个因子变量,用于索引每个主题在 T02 的值是否为例如measurement 变量中

  2. 和一个因子变量,它指示从 T01 到 T04 的变化百分比是否小于 50%

为了能够使用这些因子变量作为分组变量,例如为了在 ggplot 中绘图,必须在每个主题的每一行中填写值(我认为)。

因此,正确的数据集应如下所示:

subject  sex Timepoint measurement measurement2 responder_crit responder_percentage
1          M       T01         7.9          1.9              0                    1         
1          M       T02        12.3           NA              0                    1
1          M       T03        10.7          1.7              0                    1
1          M       T04         9.7          1.7              0                    1
2          F       T01         6.3          1.3              1                    0
2          F       T02        10.6          1.6              1                    0
2          F       T03        11.1           NA              1                    0
2          F       T04        12.5          1.7              1                    0   
3          F       T01         5.5           NA              NA                   0
3          F       T02          NA          1.1              NA                   0
3          F       T03        13.8          1.8              NA                   0
3          F       T04        15.7          1.7              NA                   0    
4          M       T01        10.5          1.5              0                    1
4          M       T02        13.4          1.4              0                    1
4          M       T03        12.4          1.4              0                    1
4          M       T04        11.3          1.9              0                    1 

不确定重塑是否是执行此类操作的标准方法。不幸的是,真实的数据集非常大而且非常混乱。重塑效果不佳。

【问题讨论】:

    标签: r dataframe tibble


    【解决方案1】:

    您可以在mutate 调用中为某些时间点设置子集:

    toosimpledataset_long %>% 
      group_by(subject) %>% 
      mutate(
        responder_crit = measurement[Timepoint == 'T02'] >= 11,
        responder_percentage = (measurement[Timepoint == 'T04'] / measurement[Timepoint == 'T01']) < 1.5
      )
    

    我对 responder_crit 的看法不太一样,但我不明白你的示例中如何只得到一个 NA。

    【讨论】:

    • 看起来responder_crit 只是+(measurement &lt;= 11) 没有任何分组。
    • 抱歉,我上传的表格不正确,因此使用了无意义的 responder_crit 变量。我已经编辑了它,但你还是得到了它!!!非常感谢,这真的很有帮助!我一定会查看 dplyr 命令。酷网站顺便说一句。 R很棒
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-25
    相关资源
    最近更新 更多