我有一个包含人名的数据集,但我认为 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
最佳答案
使用这个,它可能会有所帮助
dat$id <- as.numeric(as.factor(dat$name))
其中“id”是您的新列,“name”是您的名称列,dat 是原始数据框
关于r - 为面板数据中的每个观察创建 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21596457/