Удалить дублирующую дату и свернуть значения NA - PullRequest
0 голосов
/ 04 марта 2020

У меня есть следующий фрейм данных, web_visit_vs_email_deployed.df ...

         date          users  Program
      9  2020-01-09    NA     HEA
      10 2020-01-09    515    <NA>

Вот dput (df) для моего фрейма данных ...

structure(list(date = structure(c(1577836800, 1577923200, 1578009600, 
1578096000, 1578182400, 1578268800, 1578355200, 1578441600, 1578528000, 
1578528000, 1578614400, 1578700800, 1578787200, 1578873600, 1578960000, 
1579046400, 1579132800, 1579132800, 1579219200, 1579305600, 1579392000, 
1579478400, 1579564800, 1579651200, 1579737600, 1579737600, 1579824000, 
1579910400, 1579996800, 1580083200, 1580169600, 1580256000, 1580342400, 
1580428800, 1580428800, 1580515200, 1580601600, 1580688000, 1580774400, 
1580860800, 1580947200, 1580947200, 1581033600, 1581120000, 1581206400, 
1581292800, 1581379200, 1581465600, 1581552000, 1581552000, 1581638400, 
1581724800, 1581811200, 1581897600, 1581984000, 1582070400, 1582156800, 
1582156800, 1582243200, 1582329600, 1582416000, 1582502400, 1582588800, 
1582675200, 1582761600, 1582761600, 1582848000, 1582934400, 1583020800, 
1583107200, 1583193600), class = c("POSIXct", "POSIXt"), tzone = "UTC"), 
users = c(80, 183, 176, 86, 87, 164, 177, 136, NA, 515, 231, 
82, 110, 135, 104, 267, NA, 1137, 368, 158, 122, 168, 212, 
248, NA, 905, 301, 143, 107, 209, 127, 187, 178, NA, 443, 
169, 110, 175, 147, 169, NA, 479, 227, 107, 119, 136, 191, 
164, NA, 553, 210, 141, 96, 161, 141, 159, NA, 1568, 413, 
206, 170, 206, 247, 196, NA, 800, 258, 153, 117, 214, 182
), Program = c(NA, NA, NA, NA, NA, NA, NA, NA, "HEA", NA, 
NA, NA, NA, NA, NA, NA, "HEA", NA, NA, NA, NA, NA, NA, NA, 
"HEA", NA, NA, NA, NA, NA, NA, NA, NA, "HEA", NA, NA, NA, 
NA, NA, NA, "HEA", NA, NA, NA, NA, NA, NA, NA, "HEA", NA, 
NA, NA, NA, NA, NA, NA, "HEA", NA, NA, NA, NA, NA, NA, NA, 
"HEA", NA, NA, NA, NA, NA, NA)), row.names = c(NA, -71L), class = "data.frame")

Есть другие экземпляры во фрейме данных повторяющихся дат с NA в каждой строке, по одному для каждого столбца «пользователи» и «программа». Я просто хотел показать один экземпляр, чтобы он был коротким. У меня вопрос, как мне удалить значения NA при удалении повторяющейся строки даты? Выглядело бы так ...

         date          users   Program
      9  2020-01-09    515     HEA

Я искал и пробовал множество различных опций за последние пару часов и застрял.

Редактировать: Добавлен dput для всех данных рама

1 Ответ

0 голосов
/ 04 марта 2020

Один из способов будет:

library(dplyr)

df %>%
   group_by(date) %>%
   summarise_all(~ if (!all(is.na(.))) first(na.omit(.)) else .)

Вывод:

         date users Program
1  2020-01-01    80    <NA>
2  2020-01-02   183    <NA>
3  2020-01-03   176    <NA>
4  2020-01-04    86    <NA>
5  2020-01-05    87    <NA>
6  2020-01-06   164    <NA>
7  2020-01-07   177    <NA>
8  2020-01-08   136    <NA>
9  2020-01-09   515     HEA
10 2020-01-10   231    <NA>
11 2020-01-11    82    <NA>
12 2020-01-12   110    <NA>
13 2020-01-13   135    <NA>
14 2020-01-14   104    <NA>
15 2020-01-15   267    <NA>
16 2020-01-16  1137     HEA
17 2020-01-17   368    <NA>
18 2020-01-18   158    <NA>
19 2020-01-19   122    <NA>
20 2020-01-20   168    <NA>
21 2020-01-21   212    <NA>
22 2020-01-22   248    <NA>
23 2020-01-23   905     HEA
24 2020-01-24   301    <NA>
25 2020-01-25   143    <NA>
26 2020-01-26   107    <NA>
27 2020-01-27   209    <NA>
28 2020-01-28   127    <NA>
29 2020-01-29   187    <NA>
30 2020-01-30   178    <NA>
31 2020-01-31   443     HEA
32 2020-02-01   169    <NA>
33 2020-02-02   110    <NA>
34 2020-02-03   175    <NA>
35 2020-02-04   147    <NA>
36 2020-02-05   169    <NA>
37 2020-02-06   479     HEA
38 2020-02-07   227    <NA>
39 2020-02-08   107    <NA>
40 2020-02-09   119    <NA>
41 2020-02-10   136    <NA>
42 2020-02-11   191    <NA>
43 2020-02-12   164    <NA>
44 2020-02-13   553     HEA
45 2020-02-14   210    <NA>
46 2020-02-15   141    <NA>
47 2020-02-16    96    <NA>
48 2020-02-17   161    <NA>
49 2020-02-18   141    <NA>
50 2020-02-19   159    <NA>
51 2020-02-20  1568     HEA
52 2020-02-21   413    <NA>
53 2020-02-22   206    <NA>
54 2020-02-23   170    <NA>
55 2020-02-24   206    <NA>
56 2020-02-25   247    <NA>
57 2020-02-26   196    <NA>
58 2020-02-27   800     HEA
59 2020-02-28   258    <NA>
60 2020-02-29   153    <NA>
61 2020-03-01   117    <NA>
62 2020-03-02   214    <NA>
63 2020-03-03   182    <NA>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...