首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据的输入、处理和输出对

数据的输入、处理和输出对
EN

Stack Overflow用户
提问于 2016-11-28 00:10:32
回答 2查看 111关注 0票数 1

我们有一个包含药物管理数据的文本文件。每一行都包含一个病人ID、一个用药日期和一个药品名称,格式如下:

代码语言:javascript
复制
A234,2014-01-01,5FU
A234,2014-01-02,adderall
B324,1990-06-01,adderall
A234,2014-01-02,tylenol
B324,1990-06-01,tylenol
...etc.

使用这种格式的输入文件,生成至少25种不同时间一起使用的药物列表(即在同一天给同一患者使用)。在上面的例子中,adderall和tylenol在一起出现了两次,但是其他每一对只出现一次。将每个限定对输出为逗号分隔的元组,每一行一个。

假设adderall-tylenol组合发生了50次,tylenol-5FU组合发生了10次,输出文件应该如下所示: drug_used frequency tylenol 50

注意,由于tylenol-5FU组合发生的次数少于25次,所以最终输出中没有包含它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-28 01:08:52

使用library(data.table)我们可以做到

代码语言:javascript
复制
dt[, paste(drug, collapse = '-'), by = .(id,date)]
#      id       date               V1
# 1: A234 2014-01-01              5FU
# 2: A234 2014-01-02 adderall-tylenol
# 3: B324 1990-06-01 adderall-tylenol

虽然这也包括id-日期组合,其中药物组合不是元组。如果你只想有两种药物,那么我们增加一个测试:

代码语言:javascript
复制
dt[, if (.N == 2) paste(drug, collapse = '-'), by = .(id,date)]
#      id       date               V1
# 1: A234 2014-01-02 adderall-tylenol
# 2: B324 1990-06-01 adderall-tylenol

为了进一步确定这些结果只适用于那些在不同的日子里使用药物超过25次的患者,我们可以将结果链接到另一个测试中:

代码语言:javascript
复制
dt[, if (.N == 2) paste(drug, collapse = '-'), by = .(id,date)][, if (.N>25) .(date,V1), by=id]

如果需要,可以使用write.table将这些结果写入新文件。

数据

代码语言:javascript
复制
dt = fread("id, date, drug
A234,2014-01-01,5FU
A234,2014-01-02,adderall
B324,1990-06-01,adderall
A234,2014-01-02,tylenol
B324,1990-06-01,tylenol")
票数 2
EN

Stack Overflow用户

发布于 2016-11-28 00:58:01

可以使用dplyr库对数据表进行汇总。

代码语言:javascript
复制
library(dplyr)

data = data.frame(id = c("A234","A234", "B324", "A234","B324"),
                  date = strptime(c("2014-01-01","2014-01-02", "1990-06-01", "2014-01-02", "1990-06-01"),
                                  format = "%Y-%m-%d"),
                  drug = c("5FU", "adderall", "adderall", "tylenol", "tylenol"))

data %>%
  group_by(id, date) %>%
  summarise(drug_used = paste(drug,collapse = "-"))

Source: local data frame [3 x 3]
Groups: id [?]

      id       date        drug_used
  <fctr>     <dttm>            <chr>
1   A234 2014-01-01              5FU
2   A234 2014-01-02 adderall-tylenol
3   B324 1990-06-01 adderall-tylenol
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40835432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档