[问题] 多条件分组加总及字串相加

楼主: 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
[关键字]:
多条件相加、字串合并
作者: cywhale (cywhale)   2019-04-12 23:20:00
把变量的冒号拿掉 by=.(In_ID, Drug) 还有sum(dose)另外你paste的右括号放错位置,应该在collapse之后
作者: andrew43 (讨厌有好心推文后删文者)   2019-04-13 02:35:00
https://i.imgur.com/cnGbGpM.png此例 by 也可以略写成 by=In_ID:Drug你应该只是没有学到 .() 放在 J 和 by 的作用而已。
作者: cywhale (cywhale)   2019-04-13 07:14:00
data.table叫用column变量 .(var) "var"或外围变量 ..var有点微妙,可以参考其wiki http://bit.ly/2Iu8ihp

Links booklink

Contact Us: admin [ a t ] ucptt.com