Tôi có một data.table gọi là enc.per.day cho cuộc gặp gỡ mỗi ngày. Nó có 2403 hàng trong đó một ngày của dịch vụ được xác định và số lượng bệnh nhân nhìn thấy vào ngày đó. Tôi muốn thấy số lượng bệnh nhân trung bình được thấy trên bất kỳ loại ngày trong tuần nào.Tại sao trung bình lại tăng lên dữ liệu. (Số nguyên so với gấp đôi)?
enc.per.day[,list(patient.encounters=median(n)),by=list(weekdays(DOS))]
dòng đó đưa ra một lỗi
Lỗi trong
[.data.table
(enc.per.day,, danh sách (patient.encounters = trung bình (n)),: cột j không đánh giá với các loại phù hợp cho từng nhóm: kết quả cho nhóm 4 có cột 1 loại 'nguyên' nhưng mong gõ 'đúp'
sau đây tất cả công việc cũng
tapply(enc.per.day$n,weekdays(enc.per.day$DOS),median)
enc.per.day[,list(patient.encounters=round(median(n))),by=list(weekdays(DOS))]
enc.per.day[,list(patient.encounters=median(n)+0),by=list(weekdays(DOS))]
Điều gì đang xảy ra? Tôi mất một thời gian dài để tìm ra lý do mã của tôi không hoạt động.
Bằng cách này các cơ vector enc.per.day $ n là một số nguyên
storage.mode(enc.per.day$n)
Thu nhập "số nguyên". Hơn nữa, không có NA bất cứ nơi nào trong data.table.
@Matthew Dowle - Cảm ơn bạn thêm những chi tiết về cách * * data.table ** khởi tạo và phân bổ không gian cho vectơ kết quả. –
Có thể hava một trung vị cùng loại với giá trị không? Vì vậy, ngay cả khi tôi sẽ có các giá trị như = 1,1,1,2,2,2,2 nó không nên dẫn đến trung bình = 1,5 thay vì nó sẽ hiển thị trung bình = 2. – lony
Làm ví dụ cho đề xuất ở trên, hãy làm điều này DT [, c (as.double (lapply (.SD, median)), .N), bởi = x, .SDcols = c ("x", "y "," z ")] thay vì DT [, c (lapply (.SD, trung bình), .N), theo = x, .SDcols = c (" x "," y "," z ")] –