Giới thiệu

Trong các nghiên cứu lâm sàng, các Adverse Events thường được ghi nhận theo bệnh nhân, theo ngày. Vì thế có những bệnh nhân có nhiều AE khác nhau hoặc có một số AE lặp lại vài lần trong vài ngày.

Báo cáo nghiên cứu thường yêu cầu thống kê lại các AE xảy ra ở bao nhiêu đối tượng nghiên cứu và xuất hiện bao nhiêu lần.

Chúng ta dùng hàm tally() của package dplyr để đếm số bệnh nhân và tần suất xuất hiện của các AE

library(tidyverse)
library("readxl")
library("data.table") 

Tải data

df23 <- read_excel("E:/VINMOL002/Data/f23.xlsx")
df0 <- read_excel("E:/VINMOL002/Data/f30.xlsx")
df0 <- df0 %>% filter(CONC3 == 1) -> df0
df0 <- df0 %>% select("ID", "CONC3") -> df0
df23a <- merge(x = df0, y = df23, all.x = TRUE)

Lập bảng các AE

# count AE using Medra
tbMed <- as.data.frame(df23a %>% group_by(AEMED, ID) %>% tally())
head(tbMed)
tbMed <- tbMed %>% filter(AEMED != "NA")
length(unique(tbMed$ID))
[1] 73

Trong bảng kết quả trên, hầu hết các AE xuất hiện 1 lần ở mỗi bệnh nhân, riêng Diarrhoea xuất hiện ở 12 bệnh nhân nghiên cứu 1 lần và 1 bệnh nhân xuất hiện 2 lần. Vậy số lần xuất hiện tổng cộng của Diarrhoea là 14 lần trên 13 người.

Lập bảng các AE theo công thức n(%)[E]

Trong mẫu này có 100 bệnh nhân, chúng ta tính phần trăm thì chia cho 100.

tbMed %>% group_by(AEMED) %>% summarise(
  NumberofPatient = length(unique(ID)),
  Percent = round(NumberofPatient / 100, 3),
  Events = sum(n)
)
NA

Lập bảng với biến số AEOUT14 theo công thức n(%)[E]

tbMed2 <- as.data.frame(df23a %>% group_by(AEOUT14, ID) %>% tally())
head(tbMed2)
tbMed2 <- tbMed2 %>% filter(AEOUT14 != "NA")
length(unique(tbMed2$ID))
[1] 73
tbMed2 %>% group_by(AEOUT14) %>% summarise(
  NumberofPatient = length(unique(ID)),
  Percent = round(NumberofPatient / 100, 3),
  Events = sum(n)
)
NA
LS0tDQp0aXRsZTogIkNvdW50aW5nIEFkdmVyc2UgRXZlbnRzIGluIENsaW5pY2FsIFJlc2VhcmNoIg0KYXV0aG9yOiAiVGhpZXUgTmd1eWVuIg0KZGF0ZTogIjEwLzYvMjAyMSINCm91dHB1dDogaHRtbF9ub3RlYm9vaw0KLS0tDQoNCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQ0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBUUlVFKQ0KYGBgDQoNCiMjIEdp4bubaSB0aGnhu4d1DQoNClRyb25nIGPDoWMgbmdoacOqbiBj4bupdSBsw6JtIHPDoG5nLCBjw6FjIEFkdmVyc2UgRXZlbnRzIHRoxrDhu51uZyDEkcaw4bujYyBnaGkgbmjhuq1uIHRoZW8gYuG7h25oIG5ow6JuLCB0aGVvIG5nw6B5LiBWw6wgdGjhur8gY8OzIG5o4buvbmcgYuG7h25oIG5ow6JuIGPDsyBuaGnhu4F1IEFFIGtow6FjIG5oYXUgaG/hurdjIGPDsyBt4buZdCBz4buRIEFFIGzhurdwIGzhuqFpIHbDoGkgbOG6p24gdHJvbmcgdsOgaSBuZ8OgeS4NCg0KQsOhbyBjw6FvIG5naGnDqm4gY+G7qXUgdGjGsOG7nW5nIHnDqnUgY+G6p3UgdGjhu5FuZyBrw6ogbOG6oWkgY8OhYyBBRSB44bqjeSByYSDhu58gYmFvIG5oacOqdSDEkeG7kWkgdMaw4bujbmcgbmdoacOqbiBj4bupdSB2w6AgeHXhuqV0IGhp4buHbiBiYW8gbmhpw6p1IGzhuqduLg0KDQpDaMO6bmcgdGEgZMO5bmcgaMOgbSB0YWxseSgpIGPhu6dhIHBhY2thZ2UgZHBseXIgxJHhu4MgxJHhur9tIHPhu5EgYuG7h25oIG5ow6JuIHbDoCB04bqnbiBzdeG6pXQgeHXhuqV0IGhp4buHbiBj4bunYSBjw6FjIEFFDQoNCmBgYHtyIH0NCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeSgicmVhZHhsIikNCmxpYnJhcnkoImRhdGEudGFibGUiKSANCmBgYA0KDQojIyBU4bqjaSBkYXRhDQoNCg0KDQpgYGB7ciBwcmVzc3VyZX0NCmRmMjMgPC0gcmVhZF9leGNlbCgiRTovVklOTU9MMDAyL0RhdGEvZjIzLnhsc3giKQ0KZGYwIDwtIHJlYWRfZXhjZWwoIkU6L1ZJTk1PTDAwMi9EYXRhL2YzMC54bHN4IikNCmRmMCA8LSBkZjAgJT4lIGZpbHRlcihDT05DMyA9PSAxKSAtPiBkZjANCmRmMCA8LSBkZjAgJT4lIHNlbGVjdCgiSUQiLCAiQ09OQzMiKSAtPiBkZjANCmRmMjNhIDwtIG1lcmdlKHggPSBkZjAsIHkgPSBkZjIzLCBhbGwueCA9IFRSVUUpDQpgYGANCg0KIyMgTOG6rXAgYuG6o25nIGPDoWMgQUUNCg0KYGBge3J9DQojIGNvdW50IEFFIHVzaW5nIE1lZHJhDQp0Yk1lZCA8LSBhcy5kYXRhLmZyYW1lKGRmMjNhICU+JSBncm91cF9ieShBRU1FRCwgSUQpICU+JSB0YWxseSgpKQ0KaGVhZCh0Yk1lZCkNCnRiTWVkIDwtIHRiTWVkICU+JSBmaWx0ZXIoQUVNRUQgIT0gIk5BIikNCmxlbmd0aCh1bmlxdWUodGJNZWQkSUQpKQ0KDQpgYGANClRyb25nIGLhuqNuZyBr4bq/dCBxdeG6oyB0csOqbiwgaOG6p3UgaOG6v3QgY8OhYyBBRSB4deG6pXQgaGnhu4duIDEgbOG6p24g4bufIG3hu5dpIGLhu4duaCBuaMOibiwgcmnDqm5nIERpYXJyaG9lYSB4deG6pXQgaGnhu4duIOG7nyAxMiBi4buHbmggbmjDom4gbmdoacOqbiBj4bupdSAxIGzhuqduIHbDoCAxIGLhu4duaCBuaMOibiB4deG6pXQgaGnhu4duIDIgbOG6p24uIFbhuq15IHPhu5EgbOG6p24geHXhuqV0IGhp4buHbiB04buVbmcgY+G7mW5nIGPhu6dhIERpYXJyaG9lYSBsw6AgMTQgbOG6p24gdHLDqm4gMTMgbmfGsOG7nWkuDQoNCiMjIEzhuq1wIGLhuqNuZyBjw6FjIEFFIHRoZW8gY8O0bmcgdGjhu6ljIG4oJSlbRV0NCg0KVHJvbmcgbeG6q3UgbsOgeSBjw7MgMTAwIGLhu4duaCBuaMOibiwgY2jDum5nIHRhIHTDrW5oIHBo4bqnbiB0csSDbSB0aMOsIGNoaWEgY2hvIDEwMC4NCg0KYGBge3J9DQp0Yk1lZCAlPiUgZ3JvdXBfYnkoQUVNRUQpICU+JSBzdW1tYXJpc2UoDQogIE51bWJlcm9mUGF0aWVudCA9IGxlbmd0aCh1bmlxdWUoSUQpKSwNCiAgUGVyY2VudCA9IHJvdW5kKE51bWJlcm9mUGF0aWVudCAvIDEwMCwgMyksDQogIEV2ZW50cyA9IHN1bShuKQ0KKQ0KDQpgYGANCiMjIEzhuq1wIGLhuqNuZyB24bubaSBiaeG6v24gc+G7kSBBRU9VVDE0IHRoZW8gY8O0bmcgdGjhu6ljIG4oJSlbRV0NCg0KDQpgYGB7cn0NCnRiTWVkMiA8LSBhcy5kYXRhLmZyYW1lKGRmMjNhICU+JSBncm91cF9ieShBRU9VVDE0LCBJRCkgJT4lIHRhbGx5KCkpDQpoZWFkKHRiTWVkMikNCnRiTWVkMiA8LSB0Yk1lZDIgJT4lIGZpbHRlcihBRU9VVDE0ICE9ICJOQSIpDQpsZW5ndGgodW5pcXVlKHRiTWVkMiRJRCkpDQoNCmBgYA0KDQoNCg0KYGBge3J9DQp0Yk1lZDIgJT4lIGdyb3VwX2J5KEFFT1VUMTQpICU+JSBzdW1tYXJpc2UoDQogIE51bWJlcm9mUGF0aWVudCA9IGxlbmd0aCh1bmlxdWUoSUQpKSwNCiAgUGVyY2VudCA9IHJvdW5kKE51bWJlcm9mUGF0aWVudCAvIDEwMCwgMyksDQogIEV2ZW50cyA9IHN1bShuKQ0KKQ0KDQpgYGANCg0KDQoNCg0K