我有一个带有患者标识符的数据集和一个带有医学发现摘要的文本字段(每位患者 1 行)。我想通过拆分文本字段来创建每个患者多行的数据集,以便摘要的每个句子都位于不同的行上。随后,我想对每一行进行文本解析,以查找某些关键字和否定词。数据框结构的一个例子是(字母代表句子):
ID 摘要
1 aaaaa。bb。c
2 天。嗯。ff。G。h
3 一世。Ĵ
4 千
我想在“。”处拆分文本字段。将其转换为:
ID 摘要
1 aaaaa
1 bb
1 c
2 d
2 eee
2 ff
2 g
2 h
3 i
3 j
4 k
用于创建初始数据框的 R 代码:
ID <- c(1, 2, 3, 4)
Summary <- c("aaaaa. bb. c", "d. eee. ff. g. h", "i. j", "k")
df <- data.frame(cbind(ID, Summary))
df$ID <- as.numeric(df$ID)
df$Summary <- as.character(df$Summary)
以下之前的帖子提供了一个很好的解决方案: 在 R 的列中分解(融化)文本数据?
我使用了该帖子中适用于此示例数据集的以下代码:
dflong <- by(df, df$ID, FUN = function(x) {
sentence = unlist(strsplit(x$Summary, "[.]"))
data.frame(ID = x$ID, Summary = sentence)
})
dflong2<- do.call(rbind,dflong)
但是,当我尝试应用于更大的数据集(> 200,000 行)时,我收到错误消息:
data.frame 中的错误(ID = x$ID,摘要 = 句子):参数暗示不同的行数:1、0
我减少了数据框以在较小的数据集上对其进行测试,但只要行数大于 57,我仍然会收到此错误消息。
是否有另一种可以处理更多行的方法?任何建议表示赞赏。谢谢你。