在 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))
我想根据个人级别的现有变量按组创建变量。每个人都有一个离群变量 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))