R - 如何有条件地将连续列添加到数据框?

查克

我有一个数据框:

         from     to    color
    1   54770  54771 darkgrey
    2   54770  54775 darkgrey
    3   54770  54776 darkgrey
    4   54770  54774 darkgrey
    5   54771  54775 darkgrey
    6   54771  54776 darkgrey
    7   54771  54774      red
    8   54775  54776 darkgrey
    9   54775  54774 darkgrey
    10  54776  54774 darkgrey
    11 110780 110781 darkgrey
    12 110780 110783 darkgrey
    13 110780 110784 darkgrey
    14 110780 110782 darkgrey
    15 110781 110783 darkgrey
    16 110781 110784 darkgrey
    17 110781 110782 darkgrey
    18 110783 110784 darkgrey
    19 110783 110782 darkgrey
    20 110784 110782 darkgrey
    21  20285  20286 darkgrey
    22  20285  20287 darkgrey
    23  20285  20692      red
    24  20285  20693      red
    25  20286  20287 darkgrey
    26  20286  20692 darkgrey
    27  20286  20693 darkgrey
    28  20287  20692 darkgrey
    29  20287  20693 darkgrey
    30  83962  83963 darkgrey
    31  83962  83964 darkgrey
    32  83962  83960 darkgrey
    33  83962  83961      red
    34  83963  83964 darkgrey
    35  83963  83960 darkgrey
    36  83963  83961 darkgrey
    37  83964  83960      red
    38  83964  83961 darkgrey
    39  88564  88565 darkgrey
    40  88824  88825 darkgrey
    41  88824  88826 darkgrey
    42  88824  88565 darkgrey
    43  88825  88826 darkgrey
    44  88825  88565      red
    45  88826  88565 darkgrey
    46  72276  72272      red
    47  72276  72273 darkgrey
    48  72276  72274 darkgrey
    49  72276  72275 darkgrey
    50 111062 111058 darkgrey
    51 111062 111059 darkgrey
    52 111062 111060      red
    53 111062 111061 darkgrey
    54 111074 111070      red
    55 111074 111071      red
    56 111074 111072 darkgrey
    57 111074 111073 darkgrey

我想向这个数据帧添加另外两列,它们是序列号,分为一组奇数和偶数,如下所示:

         from     to    color  f  t
    1   54770  54771 darkgrey
    2   54770  54775 darkgrey
    3   54770  54776 darkgrey
    4   54770  54774 darkgrey
    5   54771  54775 darkgrey
    6   54771  54776 darkgrey
    7   54771  54774      red  1  2
    8   54775  54776 darkgrey
    9   54775  54774 darkgrey
    10  54776  54774 darkgrey
    11 110780 110781 darkgrey
    12 110780 110783 darkgrey
    13 110780 110784 darkgrey
    14 110780 110782 darkgrey
    15 110781 110783 darkgrey
    16 110781 110784 darkgrey
    17 110781 110782 darkgrey
    18 110783 110784 darkgrey
    19 110783 110782 darkgrey
    20 110784 110782 darkgrey
    21  20285  20286 darkgrey
    22  20285  20287 darkgrey
    23  20285  20692      red  3  4
    24  20285  20693      red  5  6
    25  20286  20287 darkgrey
    26  20286  20692 darkgrey
    27  20286  20693 darkgrey
    28  20287  20692 darkgrey
    29  20287  20693 darkgrey
    30  83962  83963 darkgrey
    31  83962  83964 darkgrey
    32  83962  83960 darkgrey
    33  83962  83961      red  7  8
    34  83963  83964 darkgrey
    35  83963  83960 darkgrey
    36  83963  83961 darkgrey
    37  83964  83960      red  9 10
    38  83964  83961 darkgrey
    39  88564  88565 darkgrey
    40  88824  88825 darkgrey
    41  88824  88826 darkgrey
    42  88824  88565 darkgrey
    43  88825  88826 darkgrey
    44  88825  88565      red 11 12
    45  88826  88565 darkgrey
    46  72276  72272      red 13 14
    47  72276  72273 darkgrey
    48  72276  72274 darkgrey
    49  72276  72275 darkgrey
    50 111062 111058 darkgrey
    51 111062 111059 darkgrey
    52 111062 111060      red 15 16
    53 111062 111061 darkgrey
    54 111074 111070      red 17 18
    55 111074 111071      red 19 20
    56 111074 111072 darkgrey
    57 111074 111073 darkgrey

我想用 NA 留下空的(我在上面的 df 中将它们排除在外)。

我可以which用来获取要更新的行的索引:

which(df$color == "red")
 [1]  7 23 24 33 37 44 46 52 54 55

我可以基于此创建两个奇数和偶数序列:

odd <- seq(from = 1, to = 2*length(which(cluster_data_updated_illegal_combined$color == "red")), by = 2)
even <- seq(from = 2, to = 2*length(which(cluster_data_updated_illegal_combined$color == "red")), by = 2)
> odd
 [1]  1  3  5  7  9 11 13 15 17 19
> even
 [1]  2  4  6  8 10 12 14 16 18 20

但是我如何组合这些来添加上面的序列号?

梅内泽斯

首先用 NA 填充列。

df$f = NA
df$t = NA

然后使用 which 来更新必要的行

df$f[which(df$color == "red")] = odd
df$t[which(df$color == "red")] = even

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

R:将新列添加到具有条件的现有数据框中

有条件地将列添加到 dplyr R 中的 groupby

如何有条件地将元素添加到R中的字符开头?

R:在有条件的情况下将数据从行添加到列

有条件地将值添加到新列并替换R中的条件列中的值

R 有条件地删除数据框

在 R 中有条件地添加列元素

R 数据框基于每季度的列值有条件地聚合

使用R有条件地替换数据框中的列值

如何按R中的多列有条件地对数据框排序?

如何使用if / then语句有条件地替换r数据框中的值

Spark:有条件地将列添加到数据框

有条件地将列添加到数据框列表中

有条件地插入新行并将值添加到R中的新行

如何有条件地删除r中的列?

根据R中一列中的连续值有条件地插入行

有条件地将mutate_at应用于R中数据框中的特定行

使用 str_detect 函数有条件地在 R 数据框中创建一个新列?

有条件地查找另一个数据框中的值以填充 R 中的列

有条件地修改 R 数据框中的所有数值?

使用R有条件地删除数据框行

R:有条件地替换数据框中几列中的值

有条件地替换多个数据框的值R

在R的数据框中有条件地用字符串替换NA

R - 将一列数据添加到数据框中的现有列

如何将具有特定数据的新列添加到 R 数据框中

如何根据R中其他列中的数据有条件地执行减法?

有条件地填充 R 中的缺失数据

如何基于一个数据框中的列的值和R中另一个数据框的列标题名称有条件地创建新列