R 为面板数据中的每个观察创建id
我有一个带有人名的数据集,但我认为id是错误的(每个人的id在数据集中不是唯一的)。我想创建一个新的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 似乎是一个简单的
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