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

时间:2017-12-04 21:02:28

标签: r function plyr

我想按组创建一个变量,以个别级别的现有变量为条件。每个人都有一个异常值变量1,2,3。我想按组创建一个新变量,这样当该组中至少有一个异常值变量= 2时,新的var = 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

有什么建议吗?

谢谢!

1 个答案:

答案 0 :(得分: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))