在 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]
我一直在尝试这样做:
我想在 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]