R在满足3个条件的情况下,比较一列中的行值

R在满足3个条件的情况下,比较一列中的行值,r,loops,comparison,row,R,Loops,Comparison,Row,虽然我在stackoverflow上搜索了很多,但我找不到问题的答案。这相当棘手,因为我只想在满足3个条件的情况下比较一列中的行值。 我想比较同一列(结果)中的两行值,当且仅当它们处于相同的治疗、组和周期时。我的目标是评估球员1和球员2是否得到了相同的结果(1=如果是,0=如果否)。我总共有五个专栏:治疗;玩家;组;结果;时期 在桌子下面 df T Player Group Result Period Same Result 1 1 6

虽然我在stackoverflow上搜索了很多,但我找不到问题的答案。这相当棘手,因为我只想在满足3个条件的情况下比较一列中的行值。 我想比较同一列(结果)中的两行值,当且仅当它们处于相同的治疗、组和周期时。我的目标是评估球员1和球员2是否得到了相同的结果(1=如果是,0=如果否)。我总共有五个专栏:治疗;玩家;组;结果;时期 在桌子下面

    df
T   Player    Group      Result  Period    Same Result
1     1         6          20      1          1
1     2         6          20      1          1
1     1         5          20      1          0
1     2         1          20      1          1
1     1         1          20      1          1
1     2         2          20      1          1
1     1         2          20      1          1
1     2         4          120     1          1
1     1         3          20      1          1
1     2         3          20      1          1
1     1         4          120     1          1
1     2         5          120     1          0

2     1         2          20      1          1
2     2         1          120     1          1
2     1         4          20      1          0
2     2         5          20      1          1
2     1         6          20      1          1
2     2         2          20      1          1
2     1         3          20      1          1 
2     2         3          20      1          1
2     1         1          120     1          1
2     2         6          20      1          1
2     1         5          20      1          1
2     2         4          120     1          0

有什么想法吗?非常感谢您的帮助。
提前多谢

使用
tidyverse
可以执行以下操作。首先,
group\u by
3列您感兴趣的内容:治疗、分组和周期。然后,对每组使用
n_distinct
,查看该组是否只有一个唯一的结果

library(tidyverse)

df %>%
  group_by(T, Group, Period) %>%
  mutate(Same_Result_2 = +(n_distinct(Result) == 1)) 
可选择
数据。表
包:

library(data.table)

setDT(df)
df[, Same_Result_3 := if(uniqueN(Result)==1) 1 else 0, by=.(T, Group, Period)]
输出

相同的结果是示例中提供的值<代码>相同的\u结果\u 2
由上述
tidyverse
代码确定

# A tibble: 24 x 7
# Groups:   T, Group, Period [12]
       T Player Group Result Period Same_Result_1 Same_Result_2
   <int>  <int> <int>  <int>  <int>         <int>         <int>
 1     1      1     6     20      1             1             1
 2     1      2     6     20      1             1             1
 3     1      1     5     20      1             0             0
 4     1      2     1     20      1             1             1
 5     1      1     1     20      1             1             1
 6     1      2     2     20      1             1             1
 7     1      1     2     20      1             1             1
 8     1      2     4    120      1             1             1
 9     1      1     3     20      1             1             1
10     1      2     3     20      1             1             1
11     1      1     4    120      1             1             1
12     1      2     5    120      1             0             0
13     2      1     2     20      1             1             1
14     2      2     1    120      1             1             1
15     2      1     4     20      1             0             0
16     2      2     5     20      1             1             1
17     2      1     6     20      1             1             1
18     2      2     2     20      1             1             1
19     2      1     3     20      1             1             1
20     2      2     3     20      1             1             1
21     2      1     1    120      1             1             1
22     2      2     6     20      1             1             1
23     2      1     5     20      1             1             1
24     2      2     4    120      1             0             0
#一个tible:24 x 7
#组:T,组,周期[12]
T玩家组结果周期相同结果1相同结果2
1     1      1     6     20      1             1             1
2     1      2     6     20      1             1             1
3     1      1     5     20      1             0             0
4     1      2     1     20      1             1             1
5     1      1     1     20      1             1             1
6     1      2     2     20      1             1             1
7     1      1     2     20      1             1             1
8     1      2     4    120      1             1             1
9     1      1     3     20      1             1             1
10     1      2     3     20      1             1             1
11     1      1     4    120      1             1             1
12     1      2     5    120      1             0             0
13     2      1     2     20      1             1             1
14     2      2     1    120      1             1             1
15     2      1     4     20      1             0             0
16     2      2     5     20      1             1             1
17     2      1     6     20      1             1             1
18     2      2     2     20      1             1             1
19     2      1     3     20      1             1             1
20     2      2     3     20      1             1             1
21     2      1     1    120      1             1             1
22     2      2     6     20      1             1             1
23     2      1     5     20      1             1             1
24     2      2     4    120      1             0             0

亲爱的Ben,非常感谢您的帮助,如果没有您,我们不可能想出这个解决方案。像发条一样工作!