2011-10-16 76 views
16

Có chức năng đếm số lần từ khóa cụ thể được chứa trong tập dữ liệu không?Đếm số lần xuất hiện từ trong R

Ví dụ, nếu dataset <- c("corn", "cornmeal", "corn on the cob", "meal") số lượng sẽ là 3.

Trả lời

29

Hãy cho thời điểm này giả sử bạn muốn số của nguyên tố có chứa "ngô":

length(grep("corn", dataset)) 
[1] 3 

Sau khi bạn nhận được những điều cơ bản của R xuống tốt hơn bạn có thể muốn xem gói "tm".

EDIT: Tôi nhận ra rằng thời gian này xung quanh bạn muốn bất kỳ "ngô" nhưng trong tương lai bạn có thể muốn nhận được từ "ngô". Qua trên r-giúp Bill Dunlap đã chỉ ra một mô hình grep nhỏ gọn hơn để thu thập toàn bộ từ:

grep("\\<corn\\>", dataset) 
+0

Bạn có thể chia các vectơ trên "", làm uniqu e và chạy bảng trên toàn bộ điều. :) –

+3

Phải. Làm nổi bật sự mơ hồ của câu hỏi ban đầu. Tôi không thể tìm ra lý do tại sao 4 là con số đúng. Phương pháp của bạn sẽ trả về 2 cho "bắp", 1 cho "bữa ăn" và 1 cho "bột ngô". Cách greppish để đếm các từ được phân tách bằng dấu cách "corn" có thể là: length (grep ("^ corn $ |^corn | corn $", tập dữ liệu)) –

+0

Đó là lỗi đánh máy. Số lượng sẽ là 3. – LNA

26

Một khá thuận tiện và trực quan cách để làm điều đó là sử dụng str_count chức năng của gói stringr:

library(stringr) 
dataset <- c("corn", "cornmeal", "corn on the cob", "meal") 

# for mere occurences of the pattern: 
str_count(dataset, "corn") 
# [1] 1 1 1 0 

# for occurences of the word alone: 
str_count(dataset, "\\bcorn\\b") 
# [1] 1 0 1 0 

# summing it up 
sum(str_count(dataset, "corn")) 
# [1] 3 
1

Bạn cũng có thể làm điều gì đó như sau:

length(dataset[which(dataset=="corn")]) 
Các vấn đề liên quan