r - 根据子组中的一行生成子组的标识符

标签 r

我有一个数据框,其中包含来自多个条件下的多个实验的数据。其中每一个都有多个时期以及在这些时期中相互作用的多个主体。

我的数据如下(前五列):

Experiment Condition Period Subject   E    G   GNew
     1         1        1      1     20    1     1
     1         1        1      2     60    2     2
     1         1        1      3     20    1     1
     1         1        1      4     60    2     2
     1         1        2      1     23   NA     1
     1         1        2      2     45   NA     2
     1         1        2      3     13   NA     1
     1         1        2      4     20   NA     2
     1         2        1      1     50    3     3
     1         2        1      2     50    3     3
     1         2        1      3     40    4     4
     1         2        1      4     50    3     3
     1         2        2      1     23   NA     3
     1         2        2      2     45   NA     3
     1         2        2      3     13   NA     4
     1         2        2      4     20   NA     3

我现在想要生成一个变量 GNew,它根据相同实验和条件下第一阶段的 E 值将受试者分组。

我已经成功生成了 G 列,但我想要的是最终得到一个像 GNew 这样的变量,它根据第一个周期中 E 中的值为每个主题分配一个组编号,但包含该编号每个时期。不同的实验和条件是相互独立的,应该得到不同的组号GNew,如上数据所示。

我可以通过嵌套 for 循环来实现这一点,但我确信有一个更优雅的解决方案,使用 aggregatebyapplydata.table 或类似的内容。我已经在谷歌上搜索了一段时间,但仍然没有找到解决方案。

最佳答案

如果 tidyverse 不被禁止,您可以执行 group_by,然后 arrange,然后 mutate 选择每个组中的第一个元素。

data %>%
    group_by(Experiment, Condition) %>% 
    arrange(E) %>%
    mutate(Gnew = E[1]) %>% 
    ungroup() -> data 

(注意:未测试)

关于r - 根据子组中的一行生成子组的标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51537350/

相关文章:

r - x 和 y 变量都在回归中删失

r - 在 R 中使用 OR 条件和字符串进行子集化

R:如何为 `mean` 的 `rnorm` 参数提供向量?

r - 在R中的函数之间传递缺少的参数

R 根据前一行中的值删除行

r - 增加 y 轴上文本和标题之间的距离

r - 将列表列拆分为多行

c - R 中的 n 维积分,限制为函数

mysql - R MYSQL写表删除某些列

r - 以容差匹配两个非常非常大的向量(快速!但节省工作空间)