重命名大 ID
假设我有一个包含 N 行的 data.frame。 id
列有 10 个唯一值;所有这些值都是大于 1e7 的整数。我想将它们重命名为编号 1 到 10,并将这些新 ID 作为一列保存在我的 data.frame 中。
此外,我想轻松确定 1) 给定 id.new 的 id 和 2) 给定 id 的 id.new >。
例如:
> set.seed(123)
> ids <- sample(1:1e7,10)
> A <- data.frame(id=sample(ids,100,replace=TRUE),
x=rnorm(100))
> head(A)
id x
1 4566144 1.5164706
2 9404670 -1.5487528
3 5281052 0.5846137
4 455565 0.1238542
5 7883051 0.2159416
6 5514346 0.3796395
Suppose I have a data.frame with N rows. The id
column has 10 unique values; all those values are integers greater than 1e7. I would like to rename them to be numbered 1 through 10 and save these new IDs as a column in my data.frame.
Additionally, I would like to easily determine 1) id
given id.new
and 2) id.new
given id
.
For example:
> set.seed(123)
> ids <- sample(1:1e7,10)
> A <- data.frame(id=sample(ids,100,replace=TRUE),
x=rnorm(100))
> head(A)
id x
1 4566144 1.5164706
2 9404670 -1.5487528
3 5281052 0.5846137
4 455565 0.1238542
5 7883051 0.2159416
6 5514346 0.3796395
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
试试这个:
附加评论:
要获取值表:
Try this:
Additional comment:
To get the table of values:
使用因素:
假设 x 是旧 ID,而您需要新 ID。
假设 y 是新 ID,而您想要旧 ID。
(上面找到了 id 的第一个值,此时因子的内部代码为 5。有更好的方法吗?)
Using factors:
Suppose x is the old ID and you want the new one.
Suppose y is the new ID and you want the old one.
(The above finds the first value of id at which the internal code for the factor is 5. Are there better ways?)
您可以在此处使用factor()/ordered():
然后您可以使用as.numeric()映射到1到10:
You can use factor() / ordered() here:
And you can then use as.numeric() to map to 1 to 10:
一种选择是使用
hash
包:假设 x 是旧 ID,而您需要新 ID。
假设 y 是新 ID,而您想要旧 ID。
(这有时比使用因素更方便/透明。)
One option is to use the
hash
package:Suppose x is the old ID and you want the new one.
Suppose y is the new ID and you want the old one.
(This can sometimes be more convenient/transparent than using factors.)