楼主:
engfen (Christoph)
2019-04-12 21:39:32[问题类型]:
程式咨询(我想用R 做某件事情,但是我不知道要怎么用R 写出来)
[软件熟悉度]:
新手
[问题叙述]:
我有一组资料,资料格式如下
https://i.imgur.com/twxssIj.png
我想依据住院序号(In_ID)及药物名称(Drug),把当次住院期间,
开同一种学名药的剂量(dose)加总起来,
以及用法(usage)字串相加,
其他字段(例如病历号、年龄、性别)则保持不变。
并把结果汇出来成另一个档案
希望呈现以下结果
https://i.imgur.com/UD40lg6.png
但一直出现下列错误讯息
Error in `[.data.table`(test, , { :
The items in the 'by' or 'keyby' list are length (1,1). Each must be length
13; the same length as there are rows in x (after subsetting if i is
provided).
完全不知道如何解Bug 只能请各位指点迷津
范例档有放在云端
https://nofile.io/f/yMTmqZody3d/test.xlsx
[程式范例]:
library(readxl)
library(data.table)
test <- read_excel("D:/test.xlsx",sheet = "eng")
setDT(test)
test[,{.(prod=paste("usage"),collapse=",")}, by=.("In_ID", "Drug")]
test[,{dose.sum:=sum("dose")}, by=.("In_ID", "Drug")]
test2 <- test[, .SD[.N], by =.("In_ID", "Drug")]
[环境叙述]:
R version 3.4.4 (2018-03-15)
Windows 10
[关键字]:
多条件相加、字串合并