删除以字符 (Vxxx) 开头的记录以启用 R 中的 Floor() 命令
我正在处理急诊室 ICD-9 代码数据(健康诊断),这些数据是三位数字代码,后面最多有 2 位小数(例如:499、499.1、499.51 等)。某些特殊代码使用字母“V”而不是第一个数字,例如“V10.46”。
每次急诊室就诊(行)最多可以有 11 个诊断代码(列),因此我使用 reshape() 将数据集更改为长格式。现在我想使用 Floor() 删除这些小数点。但 R 无法用角色来击倒某些东西!我收到此错误:Math.factor(dtl$diag) 中的错误:下限对于因子没有意义
这篇文章有一定的相关性,但我想知道是否有更好的方法? R:删除变量中的字符观察
有什么想法吗?
I'm working with emergency room ICD-9 code data (health diagnoses), which are three-digit codes with up to 2 decimals after (examples: 499, 499.1, 499.51, etc). Some special codes have the letter "V" instead of a first digit, such as "V10.46".
Every emergency room visit (row) can have up to 11 diagnoses codes (columns), so I used reshape() to change the dataset to long format. Now I want to use floor() to remove those decimal points. But R can't floor something with a character! I get this error: Error in Math.factor(dtl$diag) : floor not meaningful for factors
This post had some relevance but I'm wondering if there's a better way? R: Remove character observations in a variable
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
基于 @Vincent Zoonekynd 的出色答案,如果目标是对数据使用
floor
,您可以只删除“V”并在其余部分调用floor
:基于您的错误消息“对因子没有意义”,该数据列已作为字符串读取(因为某些行中的“V”),并且 R 的默认行为是将字符串列转换为因子(像类别)。
如果您收到有关
gsub
无法处理因子的错误,则需要先将列转换为字符串:然后可以像以前一样继续操作。
Building off @Vincent Zoonekynd's excellent answer, If the aim was to use
floor
on the data, you can just strip the "V" and callfloor
on the rest:Based off your error message, "not meaningful for factors", that column of your data has been read in as strings (because of the "V" in some of the rows), and the default behaviour of R is to convert string columns into factors (like categories).
If you get an error about
gsub
not working on factors, you need to convert your column to strings first:And then you can proceed as before.
对于前三个字母,您可以使用子字符串函数。
输出
For first three letters you can use substring function.
Output
您可以使用正则表达式删除点及其后面的所有内容。
You can use a regular expression to remove the dot and everything after.