[問題] 多條件分組加總及字串相加

作者: 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