【问题标题】:creating id for each observation in panel data为面板数据中的每个观察创建 id
【发布时间】:2014-02-06 07:19:37
【问题描述】:

我有一个包含人名的数据集,但我认为 id 的表述有误(现在数据集中每个人的 id 并不是唯一的)。我想创建一个新的 id 向量,但我想知道如何。例如,如果我们有以下名称列表:

name
John
John
John
Tom
Tom
David
David
Sonia
Sonia
Ben

我们如何为每个人创建唯一 ID?

id name
1  John
1  John
1  John
2  Tom
2  Tom
3  David
3  David
4  Sonia
4  Sonia
5  Ben

似乎是一个简单的过程,但我不确定如何使用循环!任何建议都会有所帮助。

我想出了一个看起来很接近但有错误的 for 循环:

> for (i in 1:5){
+   a<-unique(dat$name)
+   a<-as.vector(a)
+   dat$id[a[i]]<-i
+   dat$id[a[i+1]]<-i+1
+ }
Error in `$<-.data.frame`(`*tmp*`, "id", value = c(5L, 5L, 5L, 5L, 5L,  : 
  replacement has 11 rows, data has 10

【问题讨论】:

    标签: r


    【解决方案1】:

    使用它,它可能会有所帮助

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

    其中“id”是您的新列,“name”是您的名称列,dat 是原始数据框

    【讨论】:

      【解决方案2】:

      我也想出了for循环

      dat <- read.table(header = TRUE, text = "name
      John
      John
      John
      Tom
      Tom
      David
      David
      Sonia
      Sonia
      Ben" )
      
      for (i in 1:5){
        a<-unique(dat$name)
        a<-as.vector(a)
        dat$id[dat$name==a[i]]<-i
      }
      

      【讨论】:

        猜你喜欢
        • 2023-01-13
        • 2012-03-02
        • 1970-01-01
        • 1970-01-01
        • 2023-01-18
        • 2022-02-09
        • 2018-11-24
        • 2019-08-23
        • 1970-01-01
        相关资源
        最近更新 更多