R列的左移列名称

问题描述 投票:1回答:4

一段时间以来我一直在尝试这样做:

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

示例:

之前:

NO  Id  AGE  Gender
XY  24  F
fg  67  M

之后:

Id  Age  Gender
XY  24   F
fg  67   M

这是一个具有58.000行和500列的大表。因此,需要以某种方式命名每个单独的列。

谢谢:)

r dataframe shift names
4个回答
1
投票

如果应该删除列名NO,则可以使用

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

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


0
投票

这是一个不错的:)

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

0
投票

数据:

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 

如果最后一列为空,则可以这样:

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

0
投票

仅删除列名的第一个元素:

names(x) = names(x)[-1]
© www.soinside.com 2019 - 2024. All rights reserved.