楼主: 我秃头了
1276 6

[问答] R语言用正则表达式提取数据遇到不符合格式的源数据,报错该怎么解决 [推广有奖]

  • 0关注
  • 0粉丝

已卖:1份资源

高中生

92%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
189 点
帖子
17
精华
0
在线时间
53 小时
注册时间
2020-4-11
最后登录
2022-5-15

楼主
我秃头了 发表于 2020-4-15 12:04:12 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
大家好,我想用正则表达式同时结合循环提取医嘱中的有关信息并生成一个新的数据框,但是遇到源数据不符合我写的正则表达式的时候,系统就会报错了,我不知道该怎么修改才可以跳过这些不符合格式的源数据,或者生成NA也行,希望得到各位大神的指教,谢谢大家。
l <- dim(df1)[1]
df3 <- as.data.frame(matrix(NA,nrow = 1, ncol = 6))
l3 <- 0
for (i in 1:l) {
  df2 <- str_match_all(df4[i,2], "(\\d+-\\d+-\\d+)&([\u4E00-\u9FA5]+)&(\\d+)&&.*?[qQ](\\d+)h\\s?[×x\\*](\\d).*")  [[1]][,-1]

    n <- 1
    l3 <- l3 + n
    df3[l3,1] <- df4[i,1]
    df3[l3,2:6] <- df2

}
colnames(df3) <- c("B.ID", "date", "milk.type","intake","hours","times")
breast.milk <- df3
系统报错:
Error in `[<-.data.frame`(`*tmp*`, l3, 2:6, value = character(0)) :
  replacement has 0 items, need 5


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝


沙发
drunkfish69 发表于 2020-4-15 15:04:49
str(df2)是什么?

藤椅
我秃头了 发表于 2020-4-15 15:20:09
drunkfish69 发表于 2020-4-15 15:04
str(df2)是什么?
我的代码里没有那样的式子啊,我不明白你问的是什么?
我的代码里,df2 <- str_match_all(df4[i,2], "regularexpression")

板凳
llb_321 在职认证  发表于 2020-4-15 15:28:27
人命关天的事,只能自己解决。万一整错了呢,医嘱啊。
你这是用df4的列1形成df3的列1,df4的列2提取数据形成df3的数据列。我觉得不符合你的表达式,就跳过或NA,会导致df3的数据不完整,还是应该在正则之前,先进行数据清洗,人工调整成标准格式或补充空数据,毕竟不规范的数据应该还是少数,否则你的正则表达式也就没意义了。

报纸
我秃头了 发表于 2020-4-15 15:52:40
llb_321 发表于 2020-4-15 15:28
人命关天的事,只能自己解决。万一整错了呢,医嘱啊。
你这是用df4的列1形成df3的列1,df4的列2提 ...
放心,这只是一个几年前的数据拿来分析,不会影响生命安全的
不能手动调整不符合的格式,因为数据量太大了

地板
llb_321 在职认证  发表于 2020-4-15 18:59:25
看你的代码,正则表达式没问题,是df2的问题,上面的同学已经提示你用str(df2)检查一下,你的df3需要df2是5列的啊

7
llb_321 在职认证  发表于 2020-4-15 19:03:47
既然需要5列,就得做5个正则表达式,你上面代码只做一次,df2应该只是一维的

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-2-8 04:58