作者:
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
[關鍵字]:
多條件相加、字串合併