累积唯一数字和重置

时间:2019-04-28 22:34:09

标签: r

我想在一行中创建一个有关唯一值的两列。还有另一个是获得25个不同的值。

举个例子:

raffle  Bola1 Ball2 Ball3 Ball4 Ball5 Ball6 Ball7 Ball8 Ball9 Ball10 Ball11 Ball12 Ball13 Ball14 Ball15
2     23    15    05    04    12    16    20    06    11     19     24     01     09     13     07
3     20    23    12    08    06    01    07    11    14     04     16     10     09     17     24
4     16    05    25    24    23    08    12    02    17     18     01     10     04     19     13
5     15    13    20    02    11    24    09    16    04     23     25     12     08     19     01
6     23    19    01    05    07    21    16    10    15     25     06     02     12     04     17
7     22    04    15    08    16    14    21    23    12     01     25     19     07     10     18
8     19    16    18    09    13    08    05    25    17     10     06     15     01     22     20
9     21    04    17    05    03    13    16    09    20     24     25     19     11     15     10
10    24    19    08    23    06    02    20    11    09     03     04     10     05     12     14
11    24    09    08    19    20    22    06    10    11     16     07     25     23     02     12
12    11    05    25    01    09    08    16    04    07     24     17     02     12     14     10
13    13    06    10    05    08    14    03    11    16     15     09     17     19     07     23
14    14    21    13    19    20    06    09    05    07     23     18     01     15     02     25
15    23    06    21    04    10    24    16    01    15     02     08     19     12     18     25
16    24    17    05    08    07    12    13    02    15     10     19     25     23     21     06
17    13    20    17    01    06    07    02    14    05     09     16     19     03     21     18
18    02    23    10    07    11    14    17    22    15     06     24     08     19     20     18
19    15    17    10    23    11    24    13    14    06     02     08     05     20     16     07
20    04    09    08    24    16    20    03    17    18     19     07     06     23     14     10
21    05    02    01    22    19    08    24    04    25     23     18     20     14     11     16
22    13    15    05    09    07    10    01    03    22     02     25     14     06     04     12
23    10    11    05    19    18    14    06    04    20     01     08     03     12     16     17
24    01    19    21    14    02    23    25    05    20     11     07     10     24     17     03
25    04    23    20    02    05    13    07    09    24     03     01     06     14     22     16
26    19    11    07    16    08    21    05    10    20     13     23     09     17     14     22
27    25    06    22    21    11    24    03    14    12     13     20     08     10     15     18
28    18    21    11    07    09    03    20    16    14     12     13     17     01     19     10
29    13    14    06    01    24    04    08    05    17     22     21     19     20     09     16
30    22    02    01    17    08    04    19    20    11     14     06     21     07     23     03

在第一行中,我有15个不同的值, 在第二行中,我有6个不同的值, 我在第三行中有3个不同的值,

在第七行中,我填写所有数字,25个不同的值

我需要像这样存储该信息

raffle Ball1 Ball15 unique_balls group
1        16     02     15      1 
2        22     19     21      1
...
7        24     10     25      1
8         8     1      15       2

当我得到25个不同的值时,我表示另一个组!

我有1个以上的hundread抽奖活动,帮帮我!

1 个答案:

答案 0 :(得分:1)

如果您想在每一行中计算唯一值,并且也要一直进行到达到threshold,我们可以使用for循环

num <- numeric(length = 0L) #Vector to store unique values
threshold <- 25  #Threshold value to reset
df$group <- 1  #Initialise all group values to 1
count <- 1     #Variable to keep the count of unique groups

#For every row in the dataframe
for (i in seq_len(nrow(df))) {
    #Get all the unique values from previous rows before threshold was reached 
    #and append new unique values for this row
    num <- unique(c(num, as.integer(df[i, ])))

    #If the length of unique values reaches the threshold 
    if (length(num) >= threshold) {
         df$group[i] <- count
         #Empty the unique values vector
         num <- numeric(length = 0L)
         #Increment the group count by 1
         count = count + 1
     }
     else {
        #If the threshold is not reached, continue the previous count
        df$group[i] <- count
     }
}

df$group
# [1] 1 1 1 1 1 1 2 2 2 2 3 3 3 3 3 3 3 4 4 4 4 5 5 5 5 6 6 6 7