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

标签 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

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

我想出了一个看起来很接近但有错误的 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/

相关文章:

r - 如何使用datacamp的教程包在xaringan幻灯片中插入R练习?

r - 如何在 R 中创建一个 'stacked waterfall' 图表?

r - 时间序列数据的主成分分析(PCA): spatial and temporal pattern

r - 如何编写自定义管道友好函数?

r - 如何使用R在CSV文件中按列添加数据?

r - 在 r 中格式化绘图轴

r - R 中 sum()、length(which()) 和 nrow() 之间的区别

r - 如何在 R 中编写 trycatch

r - 如何使用窗口函数?

r - 从线性回归函数 lm 中获取误差值