Как посчитать количество слов для каждой строки столбца, а затем преобразовать в числовое? - PullRequest
1 голос
/ 26 апреля 2019

У меня есть столбец в фрейме данных, в котором перечислены удобства, найденные в расположении отеля. Мне нужно посчитать, сколько удобств в каждом ряду, а затем преобразовать их в число, чтобы я мог затем создать еще один столбец с этими числами.

> airbnb$amenities[1:25]
 [1] "{TV,Internet,Wifi,\"Air conditioning\",\"Paid parking off premises\",Breakfast,Heating,\"Smoke detector\",\"Carbon monoxide detector\",\"First aid kit\",\"Safety card\",\"Fire extinguisher\",Essentials,Shampoo,\"Lock on bedroom door\",\"24-hour check-in\",Hangers,\"Hair dryer\",Iron,\"Laptop friendly workspace\",\"translation missing: en.hosting_amenity_49\",\"translation missing: en.hosting_amenity_50\",\"Private entrance\",\"Hot water\",\"Patio or balcony\",\"Garden or backyard\",\"Luggage dropoff allowed\",\"Well-lit path to entrance\",\"Host greets you\"}"                                                                                                                                                                                                                                                                                                         
 [2] "{TV,Wifi,\"Air conditioning\",Kitchen,\"Pets live on this property\",Cat(s),\"Free street parking\",Heating,Washer,Dryer,\"Smoke detector\",Essentials,Shampoo,Hangers,\"Hair dryer\",Iron,\"Laptop friendly workspace\",\"Hot water\",\"Luggage dropoff allowed\",Other}"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
 [3] "{TV,\"Cable TV\",Wifi,\"Air conditioning\",Pool,Kitchen,\"Free parking on premises\",Breakfast,Elevator,\"Hot tub\",\"Buzzer/wireless intercom\",Heating,\"Family/kid friendly\",Washer,\"Smoke detector\",\"First aid kit\",Essentials,Shampoo,\"24-hour check-in\",Hangers,\"Hair dryer\",Iron,\"translation missing: en.hosting_amenity_50\"}"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
 [4] "{Internet,Wifi,Pool,Kitchen,\"Free street parking\",\"Buzzer/wireless intercom\",Heating,\"Smoke detector\",Essentials,Hangers,Iron,\"Hot water\",Microwave,\"Coffee maker\",Refrigerator,\"Dishes and silverware\",\"Cooking basics\",\"BBQ grill\",\"Garden or backyard\",\"Long term stays allowed\",\"Host greets you\"}"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
 [5] "{TV,Internet,Wifi,\"Air conditioning\",Kitchen,\"Paid parking off premises\",Elevator,\"Buzzer/wireless intercom\",Heating,Washer,Dryer,\"Smoke detector\",\"First aid kit\",\"Safety card\",Essentials,Shampoo,Hangers,\"Hair dryer\",Iron,\"Laptop friendly workspace\",\"Hot water\",Microwave,Refrigerator,Dishwasher,\"Dishes and silverware\",\"Cooking basics\",Oven,Stove,\"Long term stays allowed\",Other}"     

Я знаком с использованием grep, gsub и тому подобного, но я не совсем понимаю, как считать в каждом ряду. Я подумал, что grep ('[a-z]', airbnb $ подсказки) может работать для подсчета шаблонов в каждой строке, но я все еще в замешательстве.

1 Ответ

2 голосов
/ 26 апреля 2019

Один из вариантов - str_count для подсчета разделителя (,), а затем добавьте 1 к нему, чтобы получить количество n-граммных слов

library(stringr)
airbnb$amenityCount <- str_count(airbnb$amenities, ",") + 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...