[問題] 多條件分組加總及字串相加
[問題類型]:
程式諮詢(我想用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
[關鍵字]:
多條件相加、字串合併
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 110.50.135.132
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1555076376.A.EFE.html
→
04/12 23:20,
6年前
, 1F
04/12 23:20, 1F
→
04/12 23:21,
6年前
, 2F
04/12 23:21, 2F
感謝 看不到自己的盲點,經提醒後 修正程式碼 結果就能正確跑出來
不過過程似乎有點瑣碎,還在思索如何用magrittr的%>%來改寫
-----------------------------------------------------------
test <- read_excel("D:/Desktop/test.xlsx",sheet = "eng")
setDT(test)
A <- test[,{dose.sum =sum(dose)}, by=c("In_ID", "Drug")]
B <- test[,{paste(usage,collapse=",")}, by=c("In_ID", "Drug")]
C <- test[, .SD[.N], by =c("In_ID", "Drug")]
D <- merge(A,B,by=c("In_ID", "Drug") )
E <- merge(C,D,by=c("In_ID", "Drug") )
E$dose<-NULL
E$usage<-NULL
names(E)[c(6,7)] <- c("dose","usage")
------------------------------------------------------------
※ 編輯: engfen (110.50.135.132), 04/13/2019 02:44:08
→
04/13 02:35,
6年前
, 3F
04/13 02:35, 3F

→
04/13 02:39,
6年前
, 4F
04/13 02:39, 4F
太感動了 樓上用一行程式碼就解決我的問題了
※ 編輯: engfen (110.50.135.132), 04/13/2019 02:47:05
→
04/13 02:50,
6年前
, 5F
04/13 02:50, 5F
推
04/13 07:14,
6年前
, 6F
04/13 07:14, 6F
→
04/13 07:15,
6年前
, 7F
04/13 07:15, 7F
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章