R 如果一个组中的两个值中的任何一个出现在另一列中,是否有方法在所有行中指定值1?

R 如果一个组中的两个值中的任何一个出现在另一列中,是否有方法在所有行中指定值1?,r,if-statement,group-by,conditional-statements,R,If Statement,Group By,Conditional Statements,例如,我有一个NBA球员的数据集。我想看看谁曾效力于网队或尼克斯队 Name| Teams| Baron Davis Hornets Baron Davis Warriors Baron Davis Knicks Jason Kidd Suns Jason Kidd Nets Jason Kidd Mavs Jason Kidd

例如,我有一个NBA球员的数据集。我想看看谁曾效力于网队或尼克斯队

       Name|          Teams|
 Baron Davis        Hornets
 Baron Davis       Warriors
 Baron Davis         Knicks
 Jason Kidd            Suns
 Jason Kidd            Nets 
 Jason Kidd            Mavs
 Jason Kidd          Knicks
Kevin Durant        Thunder
Kevin Durant           Nets
Kevin Durant        Warriors
Michael Jordan         Bulls
Reggie Miller        Pacers
Allan Houston         Knicks
Allan Houston        Pistons
根据这些信息,我想为每个在尼克斯或篮网打球并有结果的球员分配一个值1

       Name|          Teams|      value
 Baron Davis        Hornets           1
 Baron Davis       Warriors           1
 Baron Davis         Knicks           1 
 Jason Kidd            Suns           1
 Jason Kidd            Nets           1
 Jason Kidd            Mavs           1
 Jason Kidd          Knicks           1
Kevin Durant        Thunder           1 
Kevin Durant           Nets           1
Kevin Durant        Warriors          1
Michael Jordan         Bulls          0
Reggie Miller        Pacers           0
Allan Houston         Knicks          1
Allan Houston        Pistons          1

他们所需要做的就是为两支球队中的一支打1分。如果没有,则指定0。

我们可以按“名称”分组,通过检查向量中的任何元素在%列中的
%来创建“值”,以生成逻辑向量,并强制它以
+
作为.integer的形式转换为二进制

library(dplyr)
df1 %>%
     group_by(Name) %>%
     mutate(value = +(any(c('Knicks', 'Nets') %in% Teams))) %>%
     ungroup
-输出

# A tibble: 14 x 3
   Name           Teams    value
   <chr>          <chr>    <int>
 1 Baron Davis    Hornets      1
 2 Baron Davis    Warriors     1
 3 Baron Davis    Knicks       1
 4 Jason Kidd     Suns         1
 5 Jason Kidd     Nets         1
 6 Jason Kidd     Mavs         1
 7 Jason Kidd     Knicks       1
 8 Kevin Durant   Thunder      1
 9 Kevin Durant   Nets         1
10 Kevin Durant   Warriors     1
11 Michael Jordan Bulls        0
12 Reggie Miller  Pacers       0
13 Allan Houston  Knicks       1
14 Allan Houston  Pistons      1
#一个tible:14 x 3
命名团队价值观
1戴维斯男爵黄蜂队1
2戴维斯勇士男爵1
3戴维斯男爵尼克斯队1
4基德太阳队1
5基德网队1
6基德小牛队1
7基德尼克斯队1
8凯文·杜兰特·雷霆1
9凯文·杜兰特网队1
10凯文·杜兰特勇士队1
11迈克尔乔丹公牛队0
12雷吉·米勒步行者0
13艾伦休斯顿尼克斯队1
14艾伦休斯顿活塞队1
数据
df1工作得非常完美。非常感谢。
df1 <- structure(list(Name = c("Baron Davis", "Baron Davis", "Baron Davis", 
"Jason Kidd", "Jason Kidd", "Jason Kidd", "Jason Kidd", "Kevin Durant", 
"Kevin Durant", "Kevin Durant", "Michael Jordan", "Reggie Miller", 
"Allan Houston", "Allan Houston"), Teams = c("Hornets", "Warriors", 
"Knicks", "Suns", "Nets", "Mavs", "Knicks", "Thunder", "Nets", 
"Warriors", "Bulls", "Pacers", "Knicks", "Pistons")),
class = "data.frame", row.names = c(NA, 
-14L))