如何在组内应用条件

Gru*_*ter 1 grouping r dplyr

我有以下数据:

  Group Hormone Damage    Score Greater   
 1 B     control damaged       4       1        
 2 B     control undamaged     4       1        
 3 B     JA      damaged       2       0       
 4 B     JA      undamaged     3       0  
 5 D     control damaged       2       0        
 6 D     control undamaged     1       0        
 7 D     JA      damaged       4       1        
 8 D     JA      undamaged     3       1        
Run Code Online (Sandbox Code Playgroud)

我手动创建了"更大"列.从本质上讲,它问"在一个群体中,哪个受损的分数值更大?" 较大的值分配为1,较小的值为0.

如何为我创建一些代码?我尝试过以下dplyr代码,但没有成功:

df%>% group_by(Group) %>% 
  mutate(Greater1 = if_else(Score>Score, 0,1))
Run Code Online (Sandbox Code Playgroud)

如果已经提出这个问题,请告诉我,因为我找不到类似的问题.

Sot*_*tos 6

如果你没有关系问题,你可以做到

library(tidyverse)

df %>% 
 group_by(Group, Damage) %>% 
 mutate(new = as.integer(Score == max(Score)))
Run Code Online (Sandbox Code Playgroud)

这使

# A tibble: 8 x 6
# Groups:   Group, Damage [4]
  Group Hormone Damage    Score Greater   new
  <chr> <chr>   <chr>     <int>   <int> <int>
1 B     control damaged       4       1     1
2 B     control undamaged     4       1     1
3 B     JA      damaged       2       0     0
4 B     JA      undamaged     3       0     0
5 D     control damaged       2       0     0
6 D     control undamaged     1       0     0
7 D     JA      damaged       4       1     1
8 D     JA      undamaged     3       1     1
Run Code Online (Sandbox Code Playgroud)