Создание фиктивной фигуры, если что-то произошло в каком-либо ряду набора данных в R - PullRequest
1 голос
/ 24 апреля 2020

Прежде всего я должен сказать, что я все еще новичок в кодировании и R, так что это может быть глупый вопрос, но я не мог найти такой вопрос (возможно, потому что я не знал, что именно искать )

У меня очень большой набор данных pagepath, содержащий clientID's и их поведение при просмотре на веб-сайте. Я хотел бы сделать фиктивные переменные, если клиент видел определенную страницу. Проблема в том, что я хочу, чтобы этот clientID имел по 1 в каждой строке, содержащей этот конкретный clientID, а не только в строке, где clientID посетил эту страницу.

Как выглядит мой набор данных

  ClientID pagepath         
1 12345    /home  
2 12345    /test1
3 12345    /test2 
4 67890    /test1
5 67890    /home
6 54321    /test1
7 54321    /home
8 09876    /home

Что я хочу выводить:

  ClientID pagepath    dummy_test1     dummy_test2
1 12345    /home       1               1
2 12345    /test1      1               1
3 12345    /test2      1               1
4 67890    /test1      1               0
5 67890    /home       1               0
6 54321    /test2      0               1
7 54321    /home       0               1
8 09876    /home       0               0

Помощь будет принята с благодарностью!

1 Ответ

1 голос
/ 24 апреля 2020

Мы можем group_by ClientID и проверить строку 'test1' и 'test2' в pagepath и создать два новых столбца.

library(dplyr)

df %>%
  group_by(ClientID) %>%
  mutate(dummy_test1 = +(any(grepl('test1', pagepath))), 
         dummy_test2 = +(any(grepl('test2', pagepath))))


#  ClientID pagepath dummy_test1 dummy_test2
#     <int> <fct>          <int>       <int>
#1    12345 /home              1           1
#2    12345 /test1             1           1
#3    12345 /test2             1           1
#4    67890 /test1             1           0
#5    67890 /home              1           0
#6    54321 /test1             1           0
#7    54321 /home              1           0
#8     9876 /home              0           0

+ перед any преобразует логические значения (TRUE / FALSE) в целочисленные значения (1 / 0).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...