R 为面板数据中的每个观察创建id

R 为面板数据中的每个观察创建id,r,R,我有一个带有人名的数据集,但我认为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 似乎是一个简单的

我有一个带有人名的数据集,但我认为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
>用于(1:5中的i){

+a使用这个,可能会有帮助

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

dat$id我还找到了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
}
dat