我需要创建一个具有唯一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))

EDIT:这里是@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相关问答推荐

如何在 R Shiny App 中分别计时多个react 函数?

如何绘制具有与正数相同 colored颜色 形状的负数条?

有没有办法让 ggplot2 中的 position_jitterdodge 在使用两个数据集时按两个分类变量排序?

R markdown beamer 演示返回未定义的控制序列

在 data.table `by` 中使用 `fifelse`,其中测试列是 `by` 的一部分

tidyverse:数据转换,gather()

使用矩阵图(matplot)作为 map ,位置作为位置

如何根据优先级单词列表(使用for循环和条件)查找和替换df中的值?

如何使用 r data.table 填写数据框中所有可能的列?

在指定时间后无法收敛时停止 Keras

将汇总表添加到分面网格箱线图

根据其他两列的范围信息创建和填充新列

停止更新*输入无效react

如何根据列表名称对数据进行排序?

如何从具有数据的其他行推断 R 数据框中的缺失值?

我如何知道模型是否在 lme4 中收敛或未能在 r 中出现警告消息?

如何在 R 中创建带有拟合曲线的 3D 条形图

使用 R 在 map() 中更新循环外的向量

可以使 data.table 输出看起来更像 tibble 输出吗? (10 行,仅打印适合屏幕的列)

使用箭头分配函数作为 R purrr map2