在 R 中将列名称向左移动一位

Shift column names one to the left in R

我一直在尝试这样做:

我想在 R 中将 excel sheet 的标题向上移动一列:

示例:

之前:

NO  Id  AGE  Gender
XY  24  F
fg  67  M

之后:

Id  Age  Gender
XY  24   F
fg  67   M

这是一个很大的 Table,有 58.000 行和 500 列。所以它需要以某种方式不命名每个单独的列。

谢谢:)

这个不错:)

x=data.table(a=1,b=2,c=3,d=4)
#> x
#   a b c d
#1: 1 2 3 4

names(x)[1:(ncol(x)-1)] = names(x)[2:(ncol(x))]
#> x
#   b c d d <-- the last colname gets duplicated of course
#1: 1 2 3 4

数据:

data <- tibble::tribble(
  ~NO, ~Id, ~Age, ~Gender, ~month, ~year,
  "XY", 24, "F", NA, 1990, NA,
  "fg", 67, "M", NA, 1991, NA,
  "dZ", 32, "M", NA, 1992, NA
)
data
# A tibble: 3 x 6
  NO       Id Age   Gender month year 
  <chr> <dbl> <chr> <lgl>  <dbl> <lgl>
1 XY       24 F     NA      1990 NA   
2 fg       67 M     NA      1991 NA   
3 dZ       32 M     NA      1992 NA 

names(data) <- names(data)[2:ncol(data)]
data <- data[head(seq_len(ncol(data)), -1)]
data

# A tibble: 3 x 5
  Id      Age Gender month  year
  <chr> <dbl> <chr>  <lgl> <dbl>
1 XY       24 F      NA     1990
2 fg       67 M      NA     1991
3 dZ       32 M      NA     1992

或者,如果最后一列为空,您可以这样做:

data[] <- cbind(seq_len(nrow(data)), data[head(seq_along(data), -1)])
data$NO <- NULL
data
# A tibble: 3 x 5
  Id      Age Gender month  year
  <chr> <dbl> <chr>  <lgl> <dbl>
1 XY       24 F      NA     1990
2 fg       67 M      NA     1991
3 dZ       32 M      NA     1992

如果要删除列名NO,您可以使用

names(data)[1:(ncol(data)-1)] <- names(data)[2:ncol(data)]
data[, ncol(data)] <- NULL

您首先将列名向左移动一个位置,然后删除数据框的最后一列data

只需删除列名的第一个元素:

names(x) = names(x)[-1]