首页 \ 问答 \ 重新调整矢量R(Rescale Vector R)

重新调整矢量R(Rescale Vector R)

假设我有一个整数向量,例如:

> x
[1]  1  1  1  4  4 13 13 14

我在R中寻找一种有效的方法来将矢量重新调整为整数1,以将元素的唯一数量最大化。 因此得到的向量将是:

1 1 1 2 2 3 3 4

看起来像一个简单的问题,但我很难找到一个有效的方法来做到这一点。 在实践中,这个向量很大(大约500)。


Suppose I have a vector of integers such as:

> x
[1]  1  1  1  4  4 13 13 14

I am looking for an efficient way in R to rescale the vector to integers 1 to the max of the unique number of elements. Therefore the resulting vector would be:

1 1 1 2 2 3 3 4

Seems like a simple problem but I'm having trouble finding an efficient way to do it. In practice this vector is large (around 500).


原文:https://stackoverflow.com/questions/13434204
更新时间:2019-09-11 14:43

最满意答案

尝试match(x, sort(unique(x)))

x <- sample(1:50, 1e6, replace = TRUE)
benchmark(as.integer(factor(x)), match(x, sort(unique(x))),
          replications = 20, columns = c("test", "elapsed", "relative"))
#                        test elapsed relative
# 1     as.integer(factor(x))   18.44    10.36
# 2 match(x, sort(unique(x)))    1.78     1.00

identical(as.integer(factor(x)), match(x, sort(unique(x))))
# [1] TRUE

Try match(x, sort(unique(x))):

x <- sample(1:50, 1e6, replace = TRUE)
benchmark(as.integer(factor(x)), match(x, sort(unique(x))),
          replications = 20, columns = c("test", "elapsed", "relative"))
#                        test elapsed relative
# 1     as.integer(factor(x))   18.44    10.36
# 2 match(x, sort(unique(x)))    1.78     1.00

identical(as.integer(factor(x)), match(x, sort(unique(x))))
# [1] TRUE
2012-11-17

相关问答

更多

下载maven依赖项时校验和验证失败(Checksum validation failed while downloading maven dependency)

我只是手动下载了JAR文件,校验和是正确的。 您的互联网连接存在问题。 可能是破损的电缆,接口,路由器等,或者是香蕉的防火墙/防病毒软件。 I've just manually downloaded the JAR file and the checksum is the correct one. There is a problem with your internet connection. Probably a broken cable, interface, router, etc.,

Google URL Shortener API始终会使用pagetoken返回相同的页面(Google URL Shortener API always returns same page with pagetoken)

固定代码如下: # New import: import urllib.parse # // snip time.sleep(2) f = {'start-token':npt, 'key': settings.API_KEY} formatted = '?' + urllib.parse.urlencode(f) url = raw_url + formatted

androit文本视图Mysql(androit text view Mysql)

你的布局有问题。 我建议你将每行都包装到单独的LinearLayout中,然后使用LinearLayout来包装所有新的LinearLayout。 同样由于长文本,将父代LinearLayout封装到Scroll中会更好。 注意:这只是写在文本框内的示例,它只是显示主要想法并可能包含错误。像这样: <?xml version="1.0" encoding="utf-8"?> <ScrollView android:layout_width="fill_parent"

获取选定的功能名称TFIDF Vectorizer(Get selected feature names TFIDF Vectorizer)

您可以使用tfidf_vectorizer.get_feature_names() 。 这将打印从原始文档中选择的特征名称(选择条款)。 您还可以使用tfidf_vectorizer.vocabulary_属性来获取将特征名称映射到其索引的字典,但不会进行排序。 来自get_feature_names()的数组get_feature_names()索引排序。 You can use tfidf_vectorizer.get_feature_names(). This will print fea

当添加新字段时,Sharepoint 2007列过滤中断(Sharepoint 2007 Column Filtering breaks when new field added)

原来有几个字段有列索引。 当我们以编程方式更新记录时,它打破了导致过滤器无法工作的索引。 我们删除并重新添加了索引,并且工作。 Turns out there were column indexes on several of the fields. When we updated the record programatically it broke the indexing which resulted in the filters not working. we dropped and r

为Oliver的EventStore设置mongodb持久性时,为每种事件类型注册BsonClassMap?(Registering of BsonClassMap for each event type required when setting up mongodb persistence for Oliver's EventStore?)

我遇到了同样的情况。 目前,我以与您描述的方式类似的方式执行BSON注册。 让系统在启动时执行此注册并不困扰我。 此外,我将事件和命令类保存在与实际域逻辑不同的项目中,因为我可以在服务器和客户端项目中“共享”类结构。 I've encountered the same situation. For right now, I perform the BSON registration in a similar manner that you've described. It doesn't bot

Flask-SQLAlchemy更新整个对象(Flask-SQLAlchemy updating whole object)

使用update方法; 我通常创建一个字典来使事物可读: dct = {"version": package.version, ... , "lastUpdate":datetime.utcnow()} recordedPackage.update(dct) db.session.commit() 请注意,即使在add之后也需要提交,因此请考虑将commit语句移到if / elif条件之外。 In the end I've used the dir method with the getat

重新打开插件会越来越多地调用函数(Functions get called more and more times with reopening plugin)

每次调用connect ,它都会添加另一个连接 - 即使它是在同一个插槽中。 因此,您需要将连接移出run()方法并将它们放入对话框的setup方法中,以便它们只进行一次。 Every time you call connect, it adds another connection - even if it's to the same slot. So you need to move the connections out of the run() method and put them i

相关文章

更多

最新问答

更多
  • asp.net任意用户信息(asp.net arbitrary user info)
  • 如何使用python计算docx文件中表中行的值(How to count the row's values in tables in docx file by using python)
  • MySQL:用户访问和数据库覆盖(MySQL: User access and DB overwriting)
  • 还有另一种“使用未分配的局部变量”的问题(Yet Another “Use of unassigned local variable 'whatever' ” question)
  • 开源证书颁发机构软件(Open source certificate authority software)
  • Rails中的迭代form_for是在create上添加模型的所有实例(Iteration in Rails form_for is adding all instances of model on create)
  • 如何扩展我的表视图单元格?(How to expand my table view cell?)
  • 如何使用SPARQL区分Thing和无生命对象(How to differentiate between a Thing and an inanimate object with SPARQL)
  • 在IdentityServer中,Client Secrets和Scope Secrets有什么区别?(In IdentityServer, what is the difference between Client Secrets and Scope Secrets?)
  • 如何在具有附加类时重写类(How do I override a class when it has a attached class)
  • 如何使用Git在Azure上部署C#,MVC4应用程序(How to deploy a C#, MVC4 application on Azure using Git)
  • Sitecore 7内容搜索爬网程序根目录之外的索引项(Sitecore 7 Content Search indexing items outside of crawler root)
  • 我应该在线课程使用utf-8编码吗?(Should I use utf-8 encoding for an online course?)
  • 如何在Cucumber-JS步骤定义中使用Node-mysql连接到MySQL?(How to connect to MySQL using Node-mysql in a Cucumber-JS step definition?)
  • 在MVC 4中的google.maps.LatLng(lat,lon)中将JSON字符串值分配给纬度和经度(Assign the JSON string value to Latitude and Longitude in google.maps.LatLng(lat,lon) in MVC 4)
  • awk:通过特定的分隔符删除字符串(awk: remove strings by specific delimiter)
  • 如何测试Vista的应用程序(How to test app for Vista)
  • Elasticsearch聚合器 - 缺失值的工作原理(Elasticsearch aggregators - How missing values work)
  • 绘制datetime.date熊猫(Plot datetime.date pandas)
  • PostgreSQL作为WSO2 EI和APIM + IS的数据源(PostgreSQL as datasource for WSO2 EI and APIM+IS)
  • 如何使用bash在postgres中运行alter table脚本(How to run alter table script in postgres using bash)
  • 可能使用PHP阻止整个美国州访问我的网站?(Might it be possible to block an entire US state from accessing my site, using PHP?)
  • restangular删除并输入错误网:: ERR_NAME_NOT_RESOLVED(restangular remove and put error net::ERR_NAME_NOT_RESOLVED)
  • 常见问题解答的Modx(Revolution)搜索功能(Modx(Revolution) search function for FAQs)
  • Rubymine如何使用远程口译员和Git?(How Does Rubymine Work With Remote Interpreters and Git?)
  • prepareForSegue和PerformSegueWithIdentifier发件人(prepareForSegue and PerformSegueWithIdentifier sender)
  • postgrsql与PowerShell无提示安装问题(postgresql silent installation issue with powershell)
  • 比较两个greps的输出(Comparing output from two greps)
  • 使用.NET RIA Data Services删除Silverlight 3中的数据(Deleting data in Silverlight 3 with .NET RIA Data Services)
  • 此行中AND运算符的含义(meaning of the AND operator in this line)