【问题标题】:How to create ID column in R如何在 R 中创建 ID 列
【发布时间】:2012-02-15 07:08:26
【问题描述】:

我有一个长格式的纵向数据。我想根据标识数据的每个观察值的变量列创建一个 ID 变量。我如何在 R 中做到这一点?

例子:我有这个数据

name year var1 var2
 A    1    4    3
 A    2    5    1
 A    3    4    2
 B    1    .    .
 B    2    4    3
 B    3    5    1

我想生成一个名为“id”的新列,每个名称都有一个唯一的编号,例如:

name id year var1 var2
 A    1  1    4    3
 A    1  2    5    1
 A    1  3    4    2
 B    2  1    .    .
 B    2  2    4    3
 B    2  3    5    1

有什么帮助吗?

【问题讨论】:

    标签: r database


    【解决方案1】:

    如果您的 name 列不只包含单个字母(或者即使包含),您可以使用:

    dat$id <- as.numeric(as.factor(dat$name))
    

    或者,更简单地说:

    dat$id <- c(as.factor(dat$name))
    

    dat 是你的data.frame

    【讨论】:

      【解决方案2】:
      tc='
      name year var1 var2
      A    1    4    3
      A    2    5    1
      A    3    4    2
      B    1    .    .
      B    2    4    3
      B    3    5    1'
      
      df <- read.table(text=tc, header=T)
      
      df$ID <- match(df$name, LETTERS)
      

      虽然不清楚 name 是列还是数据框的行名。 如果不是列,请尝试rownames(df) 而不是df$name

      【讨论】:

      • 我觉得text=tc应该换成textConnection(tc)
      • @jbaums text 是 read.table 的一个新参数,它有助于避免 textConnection。如果你愿意,可以去掉中间人。
      • 谢谢@RomanLuštrik,对不起AndresT。我承认我在使用的笔记本电脑上仍然使用 2.13,而且似乎 text 参数尚未在该版本中实现。我在队列中有一个编辑,但希望它不会获得批准。如果是这样,请随时将其更改回来!
      猜你喜欢
      • 1970-01-01
      • 2020-09-13
      • 1970-01-01
      • 2016-03-03
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      • 2021-09-20
      • 2011-02-07
      相关资源
      最近更新 更多