2011-08-23 41 views
7

Tôi có một biến (Var) lưu trữ 10000 giá trị và có bản chất nguyên.Đếm số lần giá trị xảy ra

Tôi muốn tính, số lần 1000 hoặc cao hơn 1000 giá trị số xuất hiện trong danh sách này.

Bất kỳ một lớp lót nào trong R?

Cảm ơn bạn trước.

+2

Bạn đã thử gì? – Iterator

Trả lời

11

sum(Var >= 1000) sẽ làm điều đó, miễn là Var là một vectơ. Nếu không, bạn cần phải yêu cầu R tìm số Var bên trong bất kỳ đối tượng nào chứa nó. Dưới đây là một ví dụ:

> set.seed(2) 
> Var <- sample(900:1100, 10) 
> Var 
[1] 937 1040 1014 933 1085 1084 925 1061 990 1005 
> Var >= 1000 
[1] FALSE TRUE TRUE FALSE TRUE TRUE FALSE TRUE FALSE TRUE 
> sum(Var >= 1000) 
[1] 6 

này sử dụng thực tế là TRUE = 1 và FALSE = 0.

+1

Như một lưu ý phụ, nếu bạn muốn làm điều này cho "Var == 1000", chắc chắn để đọc về sự khác biệt giữa "==" và "all.equal" –

10
sum(Var>=1000) 

Đề nghị bạn đọc một số tài liệu R giới thiệu, loại điều này luôn tăng lên. Ngoài ra, những gì bạn có là hy vọng không phải là một 'danh sách' nhưng một 'vector'. Nếu đó là 'danh sách' thì ... ummm, unlist() trước tiên.

+0

Tôi nghĩ bạn có nghĩa là '> =' không chỉ '>' –

+0

được sắp xếp. sai lầm của tôi ... – Spacedman

+0

@Spacedman: Cảm ơn lời khuyên của bạn, tôi đang chơi với kịch bản mô phỏng MC của bạn. Những gì tôi muốn là để đếm số lần chồng chéo quan sát xảy ra trong sim biến của bạn và sau đó chia nó cho số chu kỳ. Điều này sẽ cho một số phần nhỏ mà tôi nghĩ rằng có thể được sử dụng như một giá trị p thực nghiệm. Bất kỳ đề xuất ????? – Angelo

4

Hãy thử điều này:

sum(r >= 1000) 

nơi r là một vector. Điều này làm việc vì R tự động chuyển đổi các giá trị Booleans TRUE/FALSE thành các giá trị 1 và 0 khi bạn cố gắng tổng hợp một vectơ boolean.

3

có lẽ không phải là hiệu quả, nhưng tôi thích

> length(which(Var>=1000)) 
0

Cũng có thể sử dụng:

vec <- sample(1:10, 15, replace = TRUE) 
table(vec > 2) 

hoặc

length(vec[vec>2]) 
Các vấn đề liên quan