Câu trả lời:
Tôi sử dụng table
và prop.table
, nhưng CrossTable
trong gmodels
gói có thể cung cấp cho bạn kết quả gần hơn với SAS. Xem liên kết này .
Ngoài ra, để tạo "thống kê mô tả cho nhiều biến số cùng một lúc", bạn sẽ sử dụng summary
hàm; ví dụ summary(mydata)
.
Tóm tắt dữ liệu trong cơ sở R chỉ là một vấn đề đau đầu. Đây là một trong những lĩnh vực mà SAS hoạt động khá tốt. Đối với R, tôi đề nghị plyr
gói.
Trong SAS:
/* tabulate by a and b, with summary stats for x and y in each cell */
proc summary data=dat nway;
class a b;
var x y;
output out=smry mean(x)=xmean mean(y)=ymean var(y)=yvar;
run;
với plyr
:
smry <- ddply(dat, .(a, b), summarise, xmean=mean(x), ymean=mean(y), yvar=var(y))
Tôi không sử dụng SAS; vì vậy tôi không thể nhận xét về việc sao chép sau đây SAS PROC FREQ
, nhưng đây là hai chiến lược nhanh để mô tả các biến trong một data.frame mà tôi thường sử dụng:
describe
in Hmisc
cung cấp một bản tóm tắt hữu ích về các biến bao gồm dữ liệu số và không sốdescribe
trong psych
cung cấp số liệu thống kê mô tả cho dữ liệu số> library(MASS) # provides dataset called "survey"
> library(Hmisc) # Hmisc describe
> library(psych) # psych describe
Sau đây là đầu ra của Hmisc
describe
:
> Hmisc::describe(survey)
survey
12 Variables 237 Observations
----------------------------------------------------------------------------------------------------------------------
Sex
n missing unique
236 1 2
Female (118, 50%), Male (118, 50%)
----------------------------------------------------------------------------------------------------------------------
Wr.Hnd
n missing unique Mean .05 .10 .25 .50 .75 .90 .95
236 1 60 18.67 16.00 16.50 17.50 18.50 19.80 21.15 22.05
lowest : 13.0 14.0 15.0 15.4 15.5, highest: 22.5 22.8 23.0 23.1 23.2
----------------------------------------------------------------------------------------------------------------------
NW.Hnd
n missing unique Mean .05 .10 .25 .50 .75 .90 .95
236 1 68 18.58 15.50 16.30 17.50 18.50 19.72 21.00 22.22
lowest : 12.5 13.0 13.3 13.5 15.0, highest: 22.7 23.0 23.2 23.3 23.5
----------------------------------------------------------------------------------------------------------------------
[ABBREVIATED OUTPUT]
Sau đó, dưới đây là đầu ra của psych
describe
cho các biến số:
> psych::describe(survey[,sapply(survey, class) %in% c("numeric", "integer") ])
var n mean sd median trimmed mad min max range skew kurtosis se
Wr.Hnd 1 236 18.67 1.88 18.50 18.61 1.48 13.00 23.2 10.20 0.18 0.36 0.12
NW.Hnd 2 236 18.58 1.97 18.50 18.55 1.63 12.50 23.5 11.00 0.02 0.51 0.13
Pulse 3 192 74.15 11.69 72.50 74.02 11.12 35.00 104.0 69.00 -0.02 0.41 0.84
Height 4 209 172.38 9.85 171.00 172.19 10.08 150.00 200.0 50.00 0.22 -0.39 0.68
Age 5 237 20.37 6.47 18.58 18.99 1.61 16.75 73.0 56.25 5.16 34.53 0.42
Tôi sử dụng hàm codebook từ {EPICALC} để cung cấp số liệu thống kê tóm tắt cho một biến số và bảng tần số với nhãn mức và mã cho các yếu tố. http://cran.r-project.org/doc/contrib/Epicalc_Book.pdf (xem trang 50) Hơn nữa, điều này rất hữu ích vì nó cung cấp sd cho các biến định lượng.
Thưởng thức !
codebook()
đặt ra điều này. 1 vấn đề là na
s bị loại bỏ, mà bạn có thể muốn đưa vào đầu ra của mình. 1 cách để đối phó với điều này (ít nhất là w / yếu tố) là sử dụng ? Recode.is.na 1st (ví dụ: "mất tích"); đối với các biến số, bạn có thể tạo một biến mới ngay bên trái cột với giá trị logic dựa trên is.na()
, sau đó chạy codebook()
. Đó là một chút của một kluge, mặc dù.
Bạn có thể kiểm tra gói tóm tắt của tôi ( liên kết CRAN ) bao gồm chức năng giống như cuốn sách mã, với các tùy chọn định dạng đánh dấu và html.
install.packages("summarytools")
library(summarytools)
dfSummary(CO2, style = "grid", plain.ascii = TRUE)
+------------+---------------+-------------------------------------+--------------------+-----------+
| Variable | Properties | Stats / Values | Freqs, % Valid | N Valid |
+============+===============+=====================================+====================+===========+
| Plant | type:integer | 1. Qn1 | 1: 7 (8.3%) | 84/84 |
| | class:ordered | 2. Qn2 | 2: 7 (8.3%) | (100.0%) |
| | + factor | 3. Qn3 | 3: 7 (8.3%) | |
| | | 4. Qc1 | 4: 7 (8.3%) | |
| | | 5. Qc3 | 5: 7 (8.3%) | |
| | | 6. Qc2 | 6: 7 (8.3%) | |
| | | 7. Mn3 | 7: 7 (8.3%) | |
| | | 8. Mn2 | 8: 7 (8.3%) | |
| | | 9. Mn1 | 9: 7 (8.3%) | |
| | | 10. Mc2 | 10: 7 (8.3%) | |
| | | ... 2 other levels | others: 14 (16.7%) | |
+------------+---------------+-------------------------------------+--------------------+-----------+
| Type | type:integer | 1. Quebec | 1: 42 (50%) | 84/84 |
| | class:factor | 2. Mississippi | 2: 42 (50%) | (100.0%) |
+------------+---------------+-------------------------------------+--------------------+-----------+
| Treatment | type:integer | 1. nonchilled | 1: 42 (50%) | 84/84 |
| | class:factor | 2. chilled | 2: 42 (50%) | (100.0%) |
+------------+---------------+-------------------------------------+--------------------+-----------+
| conc | type:double | mean (sd) = 435 (295.92) | 95: 12 (14.3%) | 84/84 |
| | class:numeric | min < med < max = 95 < 350 < 1000 | 175: 12 (14.3%) | (100.0%) |
| | | IQR (CV) = 500 (0.68) | 250: 12 (14.3%) | |
| | | | 350: 12 (14.3%) | |
| | | | 500: 12 (14.3%) | |
| | | | 675: 12 (14.3%) | |
| | | | 1000: 12 (14.3%) | |
+------------+---------------+-------------------------------------+--------------------+-----------+
| uptake | type:double | mean (sd) = 27.21 (10.81) | 76 distinct values | 84/84 |
| | class:numeric | min < med < max = 7.7 < 28.3 < 45.5 | | (100.0%) |
| | | IQR (CV) = 19.23 (0.4) | | |
+------------+---------------+-------------------------------------+--------------------+-----------+
CHỈNH SỬA
Trong các phiên bản mới hơn của tóm tắt , freq()
hàm (tạo ra các bảng tần số đơn giản, nhiều điểm hơn so với câu hỏi ban đầu) chấp nhận các khung dữ liệu cũng như các biến đơn. Đối với các bảng chéo (mà Proc freq cũng làm), hãy xem ctable()
hàm.
freq(CO2)
Loại : Yếu tố đặt hàng
Freq % Valid % Valid Cum % Total % Total Cum
Qn1 7 8.33 8.33 8.33 8.33
Qn2 7 8.33 16.67 8.33 16.67
Qn3 7 8.33 25.00 8.33 25.00
Qc1 7 8.33 33.33 8.33 33.33
Qc3 7 8.33 41.67 8.33 41.67
Qc2 7 8.33 50.00 8.33 50.00
Mn3 7 8.33 58.33 8.33 58.33
Mn2 7 8.33 66.67 8.33 66.67
Mn1 7 8.33 75.00 8.33 75.00
Mc2 7 8.33 83.33 8.33 83.33
Mc3 7 8.33 91.67 8.33 91.67
Mc1 7 8.33 100.00 8.33 100.00
<NA> 0 0.00 100.00
Total 84 100.00 100.00 100.00 100.00
Loại CO2 $
Loại : Yếu tố
Freq % Valid % Valid Cum % Total % Total Cum
Quebec 42 50.00 50.00 50.00 50.00
Mississippi 42 50.00 100.00 50.00 100.00
<NA> 0 0.00 100.00
Total 84 100.00 100.00 100.00 100.00
CO2 $ Điều trị
Loại : Yếu tố
Freq % Valid % Valid Cum % Total % Total Cum
nonchilled 42 50.00 50.00 50.00 50.00
chilled 42 50.00 100.00 50.00 100.00
<NA> 0 0.00 100.00
Total 84 100.00 100.00 100.00 100.00
Cảm ơn tất cả những lời đề nghị tất cả mọi người. Tôi đã kết thúc bằng cách sử dụng chức năng numSummary của bảng hoặc Rcmdr cộng với:
apply(dataframe[,c('need_rbcs','need_platelets','need_ffp')],2,table)
Điều này hoạt động khá tốt và không quá bất tiện. Tuy nhiên tôi chắc chắn sẽ thử một số giải pháp khác!