在 R 中按组有条件地创建变量(写函数)

create variable conditionally by group in R (write function)

我想根据个人级别的现有变量按组创建变量。每个人都有一个离群变量 1、2、3。我想按组创建一个新变量,以便只要该组中至少有一个人的离群变量 = 2,新变量 = 2;每当该组中至少有一个人的离群值变量 = 3 时,新的 var = 3。

数据是这样的

grpid id outlier
1     1   1
1     2   1
1     3   2
2     4   1
2     5   3
2     6   1
3     7   1
3     8   1
3     9   1

这样的理想输出

grpid id outlier  goutlier
1     1   1       2
1     2   1       2
1     3   2       2
2     4   1       3
2     5   3       3
2     6   1       3
3     7   1       1
3     8   1       1
3     9   1       1

有什么建议吗?

谢谢!

dplyr

很容易
library(dplyr)
df <- read.table(header = TRUE,sep = ",",
                 text = "grpid,id,outlier
1,1,1
1,2,1
1,3,2
2,4,1
2,5,3
2,6,1
3,7,1
3,8,1
3,9,1")

df %>% group_by(grpid) %>% mutate(goutlier = max(outlier))