如何根据行索引替换数据框中的特定列值?

时间:2020-09-18 13:02:46

标签: r tidyverse rename

我一直在这里搜索答案,大约一个小时,因此,如果重复一遍,我感到抱歉。我只在python中找到类似的东西。

我有当前数据帧,我想将Subject中的session 1个数字从这个交替的1/2替换为一个1到15的数字序列,类似于下面的session 2

session Subject    Ep.1.    Ep.2.    Ep.3.    Ep.4.    Ep.5.    Ep.6.    Ep.7.    Ep.8.    Ep.9.   Ep.10.   Ep.11.   Ep.12. Ep.13.
1        1       1 2,00E+07 3,00E+07 1,00E+07  1.5e+07 8,00E+06 4,00E+05    20000    50000 1,00E+07 2,00E+07    60000 5,00E+05     60
1        2       2  2.4e+07  3.5e+07  2.3e+07  1.3e+07 1,00E+07 7,00E+06 5,00E+05 8,00E+05 2,00E+06 2,00E+07    30000     5000     35
1        1       3 2,00E+06  1500000 1,00E+06 2,00E+05 1,00E+05 1,00E+07 5,00E+05 5,00E+06 5,00E+08 3,00E+05      600     1000     38
1        2       4 8,00E+06  1.4e+07  1.3e+07  2500000  1500000 3,00E+06 4,00E+05 2,00E+05 2,00E+07 2,00E+07    25000 1,00E+06     70
1        1       5 5,00E+06 1,00E+08 1,00E+06  1.5e+07 1,00E+05 5,00E+06 5,00E+05     1000 1,00E+06 3,00E+07     6000      400     60
1        2       6 5,00E+08 5,00E+08 5,00E+06 1,00E+07 4,00E+05 1,00E+06 1,00E+05 2,00E+05 5,00E+08 8,00E+05     1200    30000     50
1        1       7  1.8e+07 2,00E+07 1,00E+07 1,00E+07 8,00E+06 3,00E+06 6,00E+06 1,00E+05 2,00E+05 5,00E+06     5000     8000     50
1        2       8 3,00E+07  1.8e+07  1.7e+07  2.2e+07 7,00E+06 5,00E+06 3,00E+06 1,00E+08 2,00E+08 1,00E+07    10000 1,00E+06     50
1        1       9 6,00E+05 4,00E+05   250000 3,00E+05   350000 5,00E+05   150000    20000    30000 1,00E+05     1000    10000     35
1        2      10  2.8e+07 4,00E+07  2.5e+07  2.8e+07 5,00E+06  1500000    50000 5,00E+06 1,00E+08 9,00E+07     1000 3,00E+05     32
1        1      11  3.2e+07 30500000  9800000  2.3e+07  1100000  3500000  2750000    23000 7,00E+06  1.2e+07    28000 9,00E+05     50
1        2      12 9,00E+07  2.3e+08 2,00E+06 1,00E+08 7,00E+06 7,00E+06   350000 4,00E+07 3,00E+06 6,00E+07    10000    80000     40
1        2       1 3,00E+07  2.5e+07 2,00E+07  2.5e+07 9,00E+06  1.3e+07 1,00E+07    20000 3,00E+06 2,00E+07    40000    50000     40
1        2       2 4,00E+07 6,00E+07 6,00E+05 2,00E+08 6,00E+06 2,00E+06    40000 1,00E+05    10000 5,00E+05 5,00E+05    10000     35
1        1       3  2.7e+07  2.5e+07  8500000  1.2e+07  3500000  1.1e+07 5,00E+05   123000 5,00E+06 1,00E+06    85000    20000     62
2        1       4  2.5e+07 3,00E+07  2.5e+07  3.5e+07  1.6e+07 2,00E+07 3,00E+06 7,00E+05 5,00E+08 1,00E+07    80000 1,00E+06     35
2        2       5  2.5e+07  1.8e+07  1.2e+07 8,00E+06  5500000 2,00E+06 8,00E+05    42000 8,00E+06 4,00E+06     8000    60000     60
2        3       6 4,00E+08 5,00E+08 2,00E+08  2500000  1500000  1800000 1,00E+05     8000 1,00E+07 5,00E+08      500    10000     50
2        4       7  1.2e+07  1.2e+07 2,00E+06  2.5e+07 3,00E+06 2,00E+06 5,00E+06 1,00E+05 5,00E+05 1,00E+07 2,00E+05    30000     31
2        5       8  2.2e+07  1.2e+09  2500000  8.5e+08 3,00E+07  3500000    23000   240000 2,00E+05 2,00E+05 3,00E+05 1,00E+05     20
2        6       9  1.5e+07 5,00E+06  2500000 1,00E+07 5,00E+06  1500000 2,00E+06 4,00E+08 2,00E+05 2,00E+06    30000    10000     30
2        7      10  3.2e+07  2.5e+07 1,00E+07  2.2e+07 6,00E+06 3,00E+06 1,00E+06    10000 5,00E+07 1,00E+08    36000    50000     37
2        8      11 8,00E+07 8,00E+08 2,00E+07 4,00E+07 1,00E+07  1.2e+07 3,00E+06 5,00E+05 1,00E+07  3.5e+07     4000    10000     65
2        9       1 6,00E+06 2,00E+06 9,00E+05 4,00E+06 5,00E+06 7,00E+05 2,00E+05 1,00E+06 1,00E+05 1,00E+08    10000    10000     45
2        10      2 3,00E+07  2.5e+07 2,00E+06  1.7e+07  1.5e+07  1.4e+07 8,00E+06 1,00E+06 1,00E+08 2,00E+07 5,00E+05 3,00E+06     46
2        11      3  1.2e+07 5,00E+07 2,00E+07 5,00E+07 6,00E+07 2,00E+06 5,00E+07 5,00E+06 5,00E+07 4,00E+06    25000      500     50
2        12      4  4.5e+07  2.4e+07  1.2e+07 2,00E+07 6,00E+06  4.5e+07 9,00E+05    38000 6,00E+05 2,00E+06     2000     7000     42
  • 我无法弄清楚如何重命名这些值,而不重命名其他会话的1和2。我只希望session 1中的数字变成一个序列(1-15)

  • 我曾考虑过通过它们的行索引号来重命名它们,但是在搜索中却没有任何帮助。 有什么建议吗?有没有办法用Tidyverse做到这一点?

1 个答案:

答案 0 :(得分:0)

应该这样做,假设您的数据框名为dat

dat$Subject[which(dat$session == 1)] <- seq_along(dat$Subject[which(dat$session == 1)])