1

我有两个已添加在一起的临床程序计费信息来源(使用rbind)。在每一行中都有一个 CPT 字段和一个 CPT.description 字段,提供简要说明。但是,描述与这两个来源略有不同。我希望能够将它们结合起来。这样,如果使用了不同的单词或缩写,那么我只需进行字符串搜索即可找到我要查找的内容。

因此,让我们组成一个我能够生成的数据表的简化表示。

cpt <- c(23456,23456,10000,44555,44555)
description <- c("tonsillectomy","tonsillectomy in >12 year old","brain transplant","castration","orchidectomy")
cpt.desc <- data.frame(cpt,description)

这就是我想要达到的目标。

cpt.wanted <- c(23456,10000,44555)
description.wanted <- c("tonsillectomy; tonsillectomy in >12 year old","brain transplant","castration; orchidectomy")
cpt.desc.wanted <- data.frame(cpt.wanted,description.wanted)

我曾尝试使用诸如 unstack 然后 lapply(list,paste) 之类的函数,但这不是粘贴每个列表的元素。我也尝试过重塑,但没有分类变量来区分第一版或第二版描述,甚至在某些情况下是第三版。真正烦人的部分是几个月或几年前我遇到了类似的问题,有人在 stackoverflow 或 r-help 上帮助了我,而我终其一生都找不到它。

所以根本的问题是,想象一下我面前有一个电子表格。我需要对相邻列中具有相同 CPT 代码的两个甚至三个描述单元格进行垂直合并(粘贴)。

我应该使用什么流行语来寻找这个问题的解决方案。非常感谢你的帮助。

4

2 回答 2

2
sapply( sapply(unique(cpt), function(x) grep(x, cpt) ),
                       # creates sets of index vectors as a list
        function(x) paste(description[x], collapse=";") )
       # ... and this pastes each set of selected items from "description" vector
[1] "tonsillectomy;tonsillectomy in >12 year old"
[2] "brain transplant"                           
[3] "castration;orchidectomy"     
于 2012-01-17T18:30:38.617 回答
1

这是一种使用plyr.

library("plyr")
cpt.desc.wanted <- ddply(cpt.desc, .(cpt), summarise, 
  description.wanted = paste(unique(description), collapse="; "))

这使

> cpt.desc.wanted
    cpt                           description.wanted
1 10000                             brain transplant
2 23456 tonsillectomy; tonsillectomy in >12 year old
3 44555                     castration; orchidectomy
于 2012-01-17T20:52:41.933 回答