在数据清洗过程中,有时需要从字符串中提取数字。本文以医院患者输注血制品医嘱单为例,利用R语言的stringr包和正则表达式,介绍如何提取并创建新的数值列。主要涉及`str_extract_all()`函数,处理包含整数和小数的字符串,最终将提取的数字整合到数据框中。 摘要由CSDN通过智能技术生成

数据清洗:提取字符串中的数字

在我们日常进行数据清洗的过程中,可能会遇到需要对字符串进行操作和处理的任务。在下面的例子中,我们收到了一份关于医院患者输注血制品的医嘱单,但遗憾的是,在这份数据集中,输注血制品的量包含在了一个字符串中而不是被正确的提取在用量这一列中。数据集如下:

> head(examdata)
    ID          ORDER_NAME DRUG_QUAN ZXDW
1 2559 输红细胞悬液2个单位         1 <NA>
2 1945 输红细胞悬液2个单位         1 <NA>
3 1846 输红细胞悬液2个单位         1 <NA>
4 2478       输血浆(400ml)         1 <NA>
5 2205 输红细胞悬液2个单位         1 <NA>
6 1571    输血小板10个单位         1 <NA>

stringr包与正则表达式

本次数据处理中,我们将利用stringr包来提取ORDER_NAME中的数字,并将其作为单独的一列,以方便我们后续进行数据的分析。stringr包是R语言中一个简单、易用的字符串操作工具,并且在这个包中,我们可以使用*正则表达式(Regular expressions)*进行字符串的匹配。关于stringr包与正则表达式的相关知识可以参考以下的学习资料:

给一段字符串,如何在给定的字符串提取出相应的数值,并运用这些数值; 可以使用 getchar() 找到特殊字符 , 然后把相应的数值存入一个字符数组,最后在字符数组的最后一位加上'\0'(字符串结束标志),然后字符数组的字符转换成数值,可以使用sscanf(s,"%lf",&a) 也可以使用atof(s) ;两种方法效果相同; 具体解法如下: #include&l...
有时候在做一些基础的数据结构的题,经常可能会有接收一些字符串字符串含有数字,然后要求对其数字进行运算。这就需要提取数字,再进行运算。 我以前经常是这样进行转换的: public static void main(String[] args){ Scanner sc = new Scanner(System.in); while(sc.hasNext()){...
        NSString *s1 = @"3.141592";         NSLog(@"%d", [s1 intValue]);         NSLog(@"%d", [s1 boolValue]);   // 没值就是0
近期主要学习特征工程的数据清洗部分内容。通过实践过程发现了从来没有遇到的问题,也只是自己学习刚刚开始,对python的相关知识不够熟练。 数据来自于某数据集——北京房价预测的数据清洗实践。 导入数据集,并看数据信息,变量,数据类型等。 data = pd.read_csv('houseInfo_2018_09_10.csv') bj_data = data[data['region'] =...
需要从text特征提取形如 13.5/10 这样的字符串,再分别提取分子分母。 1)可以利用 str.extract() 方法。 2)利用正则表达式 \d+.?\d*/\d+ 进行匹配 3)再利用 .split() 方法提取分子分母 test.text.tolist() output [‘This is Bella. She hopes her smile made you smile....
MIMICIII 数据库患者住院次数分布数据库三个病人IDsubject_id:hadm_idicustay_id数据库患者住院次数的分布使用聚合函数进行查询使用R链接数据库进行绘图 数据库三个病人ID 最近在用MIMICIII数据库提取一些数据,突然意识到一个问题,提取出的数据很多患者都是多次入院的。因此,特地去查看下数据库到底有多少患者住了多少次的医院。 在MIMICIII数据库,存...