【问题标题】:Rename several columns (variable number)重命名几列(变量号)
【发布时间】:2017-06-03 13:11:13
【问题描述】:

我有一个数据集,其中最后一列表示从该数据集中提取的停靠点数。

ColA  ColB  ColC  1  2  3  4  5  6  7  8  9  10  (...)
 a     g     c    a  q  e  r  e  r  q  g  h  q   (...)

我想要的是从列1 中选择,直到最后一列,并在其前面添加Stop,以Stop1Stop2 等结尾... 问题是这些列可能会有所不同。有时我在1 之后有 10 个,其他时候我有 6 个。

我已尝试使用 dplyr 和 data.table,但我不确定如何自动执行此操作。

编辑:ColA 到 ColC 是固定的并且始终相同。

【问题讨论】:

  • 第一列(ColAColBColC)是否已修复?
  • @MarcoSandri 是的。我会在问题上添加该信息。
  • @MarcoSandri 完美运行。但是,我如何从列 1 而不是从位置 4 中选择?如果第一列发生变化,这甚至会更加灵活。
  • @MarcoSandri 可能我没有正确解释。您编写的代码只是替换了第一列中每一列的名称。我的意思是如何重命名从名为 1 的列开始的列,因为之前可能有 n 列。
  • 我为您的问题发布了一个可能的解决方案。如果觉得有用,请点赞我的回答。谢谢。

标签: r data.table dplyr


【解决方案1】:

如果我正确理解了您的问题,那么这是一个足够灵活的代码,应该可以解决您的问题。开始考虑以下数据集:

set.seed(1)
df <- data.frame(matrix(rpois(130, 20),ncol=13))
names(df) <- c(paste("Col",LETTERS[1:3],sep=""),as.character(1:10))
df

#######
   ColA ColB ColC  1  2  3  4  5  6  7  8  9 10
1    17   21   20 13 13 15 29 25 16 15 12 23 17
2    25   17   11 24 23 14 22 23 25 14 18 19 15
3    25   18   22 18 19 30 16 19 23 27 18 19 11
4    21   18   24 25 23 19 19 18 27 23 18 16 18
5    13   21   16 18 21 23 22 18 22 24 22 26 15
6    22   16   17 27 17 20 24 24 14 21 19 17 15
7    23   23   18 22 16 16 20 18 21 27 17 22 14
8    22   22   17 17 26 13 19 25 24 17 15 13 20
9    18   24   21 22 28 26 15 22 23 20 19 15 27
10   26   23   19 16 18 20 17 25 16 20 19 18 19

现在根据需要重命名列:

k <- which(names(df)=="1")
names(df)[k:ncol(df)] <- paste("Stop",1:(ncol(df)-k+1),sep="")
df

#############
   ColA ColB ColC Stop1 Stop2 Stop3 Stop4 Stop5 Stop6 Stop7 Stop8 Stop9 Stop10
1    17   21   20    13    13    15    29    25    16    15    12    23     17
2    25   17   11    24    23    14    22    23    25    14    18    19     15
3    25   18   22    18    19    30    16    19    23    27    18    19     11
4    21   18   24    25    23    19    19    18    27    23    18    16     18
5    13   21   16    18    21    23    22    18    22    24    22    26     15
6    22   16   17    27    17    20    24    24    14    21    19    17     15
7    23   23   18    22    16    16    20    18    21    27    17    22     14
8    22   22   17    17    26    13    19    25    24    17    15    13     20
9    18   24   21    22    28    26    15    22    23    20    19    15     27
10   26   23   19    16    18    20    17    25    16    20    19    18     19

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2017-10-23
    • 2021-07-18
    • 2020-01-30
    • 1970-01-01
    • 2017-04-21
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多