gpt4 book ai didi

r - 创建 ID(行号)列

转载 作者:行者123 更新时间:2023-12-03 10:46:21 25 4
gpt4 key购买 nike

我需要创建一个具有唯一 ID 的列,基本上将行号添加为自己的列。我当前的数据框如下所示:

   V1  V2
1 23 45
2 45 45
3 56 67

如何使它看起来像这样:
V1  V2  V3
1 23 45
2 45 45
3 56 67

?

非常感谢

最佳答案

您可以使用 cbind :

d <- data.frame(V1=c(23, 45, 56), V2=c(45, 45, 67))

## enter id here, you could also use 1:nrow(d) instead of rownames
id <- rownames(d)
d <- cbind(id=id, d)

## set colnames to OP's wishes
colnames(d) <- paste0("V", 1:ncol(d))

编辑:这是@dacko 建议的比较。 d$id <- seq_len(nrow(d)稍快,但列的顺序不同( id 是最后一列;重新排序它们似乎比使用 cbind 慢):
library("microbenchmark")

set.seed(1)
d <- data.frame(V1=rnorm(1e6), V2=rnorm(1e6))

cbindSeqLen <- function(x) {
return(cbind(id=seq_len(nrow(x)), x))
}

dickoa <- function(x) {
x$id <- seq_len(nrow(x))
return(x)
}

dickoaReorder <- function(x) {
x$id <- seq_len(nrow(x))
nc <- ncol(x)
x <- x[, c(nc, 1:(nc-1))]
return(x)
}

microbenchmark(cbindSeqLen(d), dickoa(d), dickoaReorder(d), times=100)

# Unit: milliseconds
# expr min lq median uq max neval
# cbindSeqLen(d) 23.00683 38.54196 40.24093 42.60020 47.73816 100
# dickoa(d) 10.70718 36.12495 37.58526 40.22163 72.92796 100
# dickoaReorder(d) 19.25399 68.46162 72.45006 76.51468 88.99620 100

关于r - 创建 ID(行号)列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16384933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com