r - 即使不满足参数,R dplyr 也可以通过多个列查找 group 的总和并过滤
问题描述
我有一个数据框,我试图找到总天数大于某个数字,按每个唯一站点分组,并为每个唯一站点创建一个新列。即使电台不符合该标准,我也希望有一个 0 值(因此可以显示所有电台)。我通常做这样的任务没有问题,但是这个数据框的结构方式让我很难。日期是列标题(我知道这是不可以的),但这是我的老板希望表格的样子。我将不胜感激任何帮助!
数据样本:
structure(list(`AQS Code` = c(340071001, 340170006, 340010006,
340070002, 340273001, 340150002), Latitude = c("39.684249999999999",
"40.670250000000003", "39.464872", "39.934446000000001", "40.787627999999998",
"39.800339000000001"), State = c("NJ", "NJ", "NJ", "NJ", "NJ",
"NJ"), `Site Name` = c("Ancora State Hospital", "Bayonne", "Brigantine",
"Camden Spruce St", "Chester", "Clarksboro"), `Elev (m)` = c("33.0",
"3.0", "5.0", "4.0", "278.0", "12.0"), County = c("Camden, NJ",
"Hudson, NJ", "Atlantic, NJ", "Camden, NJ", "Morris, NJ", "Gloucester, NJ"
), `03/01/2019` = c(36, 30, 36, 32, 34, 30), `03/02/2019` = c(31,
34, 34, 32, 43, 29), `03/03/2019` = c(35, 42, 36, 36, 47, 30),
`03/04/2019` = c(46, 44, 48, 44, 49, 43), `03/05/2019` = c(39,
38, 43, 37, 44, 37), `03/06/2019` = c(38, 36, 41, 35, 44,
37), `03/07/2019` = c(38, 33, 40, 33, 43, 40), `03/08/2019` = c(45,
30, 45, 40, 48, 42), `03/09/2019` = c(46, 36, 47, 45, 57,
41), `03/10/2019` = c(47, 41, 48, 44, 46, 38), `03/11/2019` = c(45,
40, 48, 44, 50, 43), `03/12/2019` = c(46, 40, 49, 48, 48,
49), `03/13/2019` = c(51, 37, 46, 45, 48, 45), `03/14/2019` = c(54,
47, 52, 49, 48, 47), `03/15/2019` = c(46, 44, 46, 38, 49,
40), `03/16/2019` = c(44, 43, 47, 45, 45, 42), `03/17/2019` = c(44,
43, 46, 44, 46, 42), `03/18/2019` = c(41, 42, 44, 41, 46,
38), `03/19/2019` = c(44, 42, 45, 43, 48, 42), `03/20/2019` = c(50,
49, 50, 48, 52, 47), `03/21/2019` = c(46, 37, 46, 45, 45,
40), `03/22/2019` = c(44, 41, 46, 43, 48, 42), `03/23/2019` = c(43,
42, 46, 45, 46, 43), `03/24/2019` = c(50, 48, 50, 47, 54,
49), `03/25/2019` = c(39, 41, 43, 41, 48, 35), `03/26/2019` = c(39,
45, 45, 45, 46, 41), `03/27/2019` = c(47, 40, 46, 42, 41,
42), `03/28/2019` = c(52, 41, 46, 48, 51, 48), `03/29/2019` = c(44,
26, 45, 28, 39, 36), `03/30/2019` = c(59, 47, 48, 56, 61,
51), `03/31/2019` = c(46, 36, 43, 45, 45, 41), `04/01/2019` = c(41,
40, 47, 45, 47, 43), `04/02/2019` = c(48, 44, 47, 47, 48,
44), `04/03/2019` = c(52, 48, 57, 52, 56, 52), `04/04/2019` = c(52,
45, 54, 51, 52, 51), `04/05/2019` = c(41, 31, 45, 36, 42,
38), `04/06/2019` = c(49, 41, 40, 48, 51, 45), `04/07/2019` = c(58,
45, 56, 55, 57, 55), `04/08/2019` = c(49, 39, 43, 41, 51,
45), `04/09/2019` = c(42, 29, 38, 43, 39, 40), `04/10/2019` = c(43,
33, 49, 40, 38, 39), `04/11/2019` = c(40, 32, 40, 39, 37,
38), `04/12/2019` = c(49, 42, 46, 41, 42, 43), `04/13/2019` = c(43,
42, 43, 43, 50, 38), `04/14/2019` = c(31, 26, 29, 29, 35,
24), `04/15/2019` = c(43, 38, 45, 44, 46, 43), `04/16/2019` = c(51,
45, 55, 46, 49, 49), `04/17/2019` = c(46, 41, 47, 45, 43,
43), `04/18/2019` = c(58, 40, 52, 52, 40, 49), `04/19/2019` = c(42,
40, 43, 35, 42, 35), `04/20/2019` = c(42, 38, 44, 40, 43,
36), `04/21/2019` = c(40, 41, 38, 42, 40, 38), `04/22/2019` = c(36,
28, 34, 37, 34, 34), `04/23/2019` = c(53, 43, 50, 49, 53,
50), `04/24/2019` = c(48, 38, 54, 43, 43, 44), `04/25/2019` = c(41,
32, 40, 35, 40, 36), `04/26/2019` = c(45, 39, 45, 41, 45,
42), `04/27/2019` = c(50, 44, 51, 46, 47, 48), `04/28/2019` = c(28,
32, 37, 37, 39, 34), `04/29/2019` = c(46, 41, 43, 43, 42,
42), `04/30/2019` = c(47, 28, 44, 47, 43, 44), `05/01/2019` = c(43,
36, 42, 39, 39, 36), `05/02/2019` = c(50, 35, 38, 46, 47,
41), `05/03/2019` = c(35, 27, 39, 32, 27, 29), `05/04/2019` = c(34,
21, 36, 38, 27, 32), `05/05/2019` = c(34, 26, 37, 31, 33,
28), `05/06/2019` = c(47, 39, 43, 44, 37, 39), `05/07/2019` = c(48,
40, 46, 43, 54, 38), `05/08/2019` = c(40, 35, 40, 37, 45,
31), `05/09/2019` = c(39, 34, 41, 34, 25, 32), `05/10/2019` = c(43,
38, 39, 37, 40, 35), `05/11/2019` = c(47, 41, 45, 44, 40,
36), `05/12/2019` = c(40, 34, 45, 40, 35, 35), `05/13/2019` = c(42,
26, 45, 36, 32, 33), `05/14/2019` = c(29, 19, 27, 25, 30,
28), `05/15/2019` = c(44, 35, 43, 41, 45, 35), `05/16/2019` = c(57,
46, 57, 54, 51, 47), `05/17/2019` = c(56, 45, 51, 58, 55,
48), `05/18/2019` = c(55, 48, 48, 58, 52, 47), `05/19/2019` = c(52,
45, 46, 50, 53, 38), `05/20/2019` = c(54, 44, 42, 57, 52,
48), `05/21/2019` = c(38, 35, 42, 37, 39, 29), `05/22/2019` = c(50,
46, 39, 48, 47, 42), `05/23/2019` = c(40, 38, 38, 32, 42,
26), `05/24/2019` = c(49, 38, 52, 47, 43, 37), `05/25/2019` = c(39,
38, 38, 39, 41, 31), `05/26/2019` = c(53, 44, 50, 51, 47,
38), `05/27/2019` = c(47, 38, 40, 46, 38, 34), `05/28/2019` = c(45,
30, 44, 37, 33, 29), `05/29/2019` = c(59, 26, 48, 58, 34,
40), `05/30/2019` = c(46, 30, 40, 48, 31, 36), `05/31/2019` = c(58,
44, 53, 52, 46, 49), `06/01/2019` = c(51, 52, 53, 57, 56,
56), `06/02/2019` = c(55, 53, 51, 57, 56, 54), `06/03/2019` = c(41,
33, 46, 36, 37, 37), `06/04/2019` = c(45, 41, 45, 42, 47,
44), `06/05/2019` = c(55, 60, 47, 56, 65, 52), `06/06/2019` = c(54,
52, 50, 56, 52, 50), `06/07/2019` = c(55, 56, 56, 59, 45,
53), `06/08/2019` = c(55, 46, 51, 50, 54, 49), `06/09/2019` = c(46,
41, 40, 45, 48, 42), `06/10/2019` = c(28, 22, 32, 24, 26,
23), `06/11/2019` = c(41, 35, 40, 40, 40, 37), `06/12/2019` = c(35,
35, 35, 36, 44, 35), `06/13/2019` = c(43, 36, 42, 39, 36,
37), `06/14/2019` = c(34, 33, 37, 30, 34, 36), `06/15/2019` = c(51,
57, 46, 53, 51, 54), `06/16/2019` = c(48, 49, 43, 49, 45,
45), `06/17/2019` = c(57, 35, 53, 44, 33, 47), `06/18/2019` = c(41,
36, 38, 43, 34, 40), `06/19/2019` = c(31, 31, 28, 30, 31,
31), `06/20/2019` = c(35, 28, 34, 39, 34, 33), `06/21/2019` = c(35,
28, 33, 34, 32, 34), `06/22/2019` = c(31, 24, 31, 29, 27,
30), `06/23/2019` = c(44, 36, 39, 40, 38, 43), `06/24/2019` = c(50,
53, 49, 51, 46, 46), `06/25/2019` = c(50, 40, 38, 48, 44,
45), `06/26/2019` = c(71, 60, 55, 61, 61, 61), `06/27/2019` = c(72,
60, 70, 67, 57, 70), `06/28/2019` = c(67, 67, 72, 71, 64,
68), `06/29/2019` = c(63, 58, 56, 61, 55, 59), `06/30/2019` = c(42,
35, 42, 40, 36, 39), `07/01/2019` = c(55, 41, 40, 51, 41,
50), `07/02/2019` = c(74, 56, 59, 78, 57, 80), `07/03/2019` = c(61,
65, 47, 54, 44, 54), `07/04/2019` = c(55, 56, 51, 54, 61,
44), `07/05/2019` = c(43, 50, 39, 48, 52, 42), `07/06/2019` = c(38,
45, 37, 47, 39, 36), `07/07/2019` = c(32, 33, 30, 38, 36,
33), `07/08/2019` = c(23, 37, 28, 36, 28, 24), `07/09/2019` = c(53,
49, 49, 58, 45, 56), `07/10/2019` = c(52, 66, 46, 62, 58,
51), `07/11/2019` = c(37, 40, 32, 39, 42, 28), `07/12/2019` = c(55,
41, 53, 51, 41, 51), `07/13/2019` = c(52, 46, 43, 59, 51,
56), `07/14/2019` = c(60, 48, 54, 58, 46, 56), `07/15/2019` = c(52,
39, 37, 53, 37, 50), `07/16/2019` = c(57, 63, 51, 69, 62,
54), `07/17/2019` = c(45, 65, 48, 57, 44, 43), `07/18/2019` = c(35,
28, 35, 37, 33, 30), `07/19/2019` = c(51, 54, 41, 67, 48,
59), `07/20/2019` = c(59, 46, 45, 62, 46, 56), `07/21/2019` = c(55,
45, 44, 50, 43, 46), `07/22/2019` = c(49, 52, 45, 51, 52,
40), `07/23/2019` = c(31, 24, 26, 31, 25, 16), `07/24/2019` = c(47,
45, 40, 41, 33, 41), `07/25/2019` = c(50, 43, 43, 51, 35,
51), `07/26/2019` = c(49, 59, 53, 58, 45, 66), `07/27/2019` = c(62,
61, 50, 77, 56, 69), `07/28/2019` = c(59, 55, 45, 61, 59,
60), `07/29/2019` = c(61, 57, 50, 64, 62, 68), `07/30/2019` = c(59,
62, 48, 61, 53, 55), `07/31/2019` = c(60, 55, 42, 56, 46,
56), `08/01/2019` = c(54, 64, 65, 56, 46, 55), `08/02/2019` = c(57,
55, 51, 54, 59, 47), `08/03/2019` = c(53, 53, 41, 63, 50,
54), `08/04/2019` = c(58, 57, 48, 60, 44, 59), `08/05/2019` = c(51,
41, 42, 68, 54, 60), `08/06/2019` = c(48, 50, 45, 53, 57,
48), `08/07/2019` = c(50, 41, 34, 48, 44, 44), `08/08/2019` = c(58,
52, 45, 59, 53, 57), `08/09/2019` = c(59, 40, 43, 56, 43,
57), `08/10/2019` = c(45, 30, 41, 40, 31, 41), `08/11/2019` = c(43,
30, 33, 41, 31, 41), `08/12/2019` = c(49, 47, 46, 55, 50,
47), `08/13/2019` = c(31, 43, 31, 35, 42, 17), `08/14/2019` = c(35,
48, 42, 50, 40, 36), `08/15/2019` = c(43, 44, 43, 48, 51,
42), `08/16/2019` = c(39, 42, 31, 49, 47, 40), `08/17/2019` = c(41,
41, 33, 46, 49, 36), `08/18/2019` = c(40, 44, 31, 46, 45,
34), `08/19/2019` = c(42, 47, 30, 52, 50, 40), `08/20/2019` = c(53,
55, 47, 56, 62, 48), `08/21/2019` = c(38, 50, 32, 42, 42,
34), `08/22/2019` = c(61, 51, 52, 57, 50, 56), `08/23/2019` = c(25,
28, 22, 26, 23, 20), `08/24/2019` = c(34, 32, 39, 33, 26,
33), `08/25/2019` = c(26, 28, 24, 32, 27, 28), `08/26/2019` = c(33,
38, 33, 37, 45, 30), `08/27/2019` = c(30, 35, 32, 34, 40,
29), `08/28/2019` = c(29, 19, 24, 41, 30, 33), `08/29/2019` = c(49,
39, 48, 45, 40, 47), `08/30/2019` = c(51, 54, 46, 63, 56,
58), `08/31/2019` = c(56, 43, 48, 50, 35, 54), `09/01/2019` = c(43,
38, 40, 44, 43, 41), `09/02/2019` = c(40, 31, 37, 41, 36,
31), `09/03/2019` = c(47, 48, 40, 55, 56, 57), `09/04/2019` = c(46,
45, 31, 51, 46, 42), `09/05/2019` = c(31, 27, 31, 34, 30,
31), `09/06/2019` = c(29, 26, 31, 28, 28, 18), `09/07/2019` = c(43,
34, 42, 42, 35, 38), `09/08/2019` = c(42, 36, 41, 40, 35,
40), `09/09/2019` = c(43, 38, 40, 50, 38, 44), `09/10/2019` = c(36,
29, 31, 44, 41, 37), `09/11/2019` = c(48, 46, 31, 61, 58,
41), `09/12/2019` = c(57, 30, 49, 52, 34, 42), `09/13/2019` = c(28,
27, 27, 28, 28, 24), `09/14/2019` = c(32, 32, 30, 35, 29,
28), `09/15/2019` = c(49, 36, 31, 50, 38, 42), `09/16/2019` = c(56,
25, 50, 53, 34, 37), `09/17/2019` = c(47, 39, 39, 45, 39,
39), `09/18/2019` = c(33, 29, 33, 35, 32, 31), `09/19/2019` = c(30,
25, 31, 38, 41, 37), `09/20/2019` = c(50, 50, 45, 54, 54,
53), `09/21/2019` = c(59, 65, 44, 70, 51, 66), `09/22/2019` = c(57,
59, 40, 56, 66, 56), `09/23/2019` = c(56, 65, 36, 62, 53,
49), `09/24/2019` = c(33, 27, 35, 33, 30, 31), `09/25/2019` = c(50,
38, 39, 51, 49, 52), `09/26/2019` = c(48, 40, 39, 46, 39,
47), `09/27/2019` = c(47, 39, 43, 51, 44, 51), `09/28/2019` = c(45,
45, 38, 46, 47, 48), `09/29/2019` = c(40, 37, 37, 37, 35,
40), `09/30/2019` = c(30, 28, 30, 30, 26, 31), `10/01/2019` = c(39,
44, 34, 43, 46, 43), `10/02/2019` = c(55, 47, 51, 46, 52,
54), `10/03/2019` = c(17, 12, 20, 16, 11, 9), `10/04/2019` = c(27,
23, 28, 30, 28, 23), `10/05/2019` = c(32, 29, 33, 35, 31,
28), `10/06/2019` = c(38, 33, 34, 36, 30, 32), `10/07/2019` = c(37,
34, 32, 36, 32, 35), `10/08/2019` = c(NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_), `10/09/2019` = c(15,
16, 22, 23, 23, 14), `10/10/2019` = c(36, 33, 38, 38, 36,
35), `10/11/2019` = c(31, 34, 30, 38, 37, 35), `10/12/2019` = c(38,
25, 35, 38, 31, 34), `10/13/2019` = c(30, 30, 31, 33, 35,
30), `10/14/2019` = c(43, 37, 39, 45, 47, 43), `10/15/2019` = c(38,
25, 37, 36, 34, 35), `10/16/2019` = c(45, 42, 46, 41, 44,
33), `10/17/2019` = c(26, 18, 27, 25, 22, 24), `10/18/2019` = c(26,
22, 27, 32, 31, 29), `10/19/2019` = c(33, 28, 32, 34, 36,
32), `10/20/2019` = c(35, 30, 39, NA, 31, 28), `10/21/2019` = c(36,
31, 35, 38, 41, 34), `10/22/2019` = c(31, 26, 32, 28, NA,
23), `10/23/2019` = c(36, 30, 35, 36, 38, 35), `10/24/2019` = c(41,
34, 40, 38, 38, 36), `10/25/2019` = c(40, 28, 37, 37, 37,
38), `10/26/2019` = c(34, 33, 37, 35, 34, 33), `10/27/2019` = c(30,
31, 30, 31, 35, 29), `10/28/2019` = c(26, 24, 32, 30, 32,
27), `10/29/2019` = c(20, 9, 30, 18, 14, 13), `10/30/2019` = c(17,
10, 26, 20, 23, 13), `10/31/2019` = c(32, 29, 33, 32, 29,
NA), Max = c(74, 67, 72, 78, 66, 80)), row.names = c(NA,
-6L), class = c("tbl_df", "tbl", "data.frame"))
这是我尝试过的:
test<-test%>%
dplyr::filter_at(vars(7:252),any_vars(.>70))%>%
dplyr::group_by(`Site Name`)%>%
dplyr::summarise(`Daily Exceedance` = n())
我想要的是:
下图就是我想要的。我想要添加超出列。
解决方案
我们可以这样rowSums
做
library(dplyr)
test %>%
mutate(Exceed = rowSums(select(., 7:252) > 70, na.rm = TRUE)) %>%
select(`AQS Code`:County, Exceed, everything())
# A tibble: 6 x 253
# `AQS Code` Latitude State `Site Name` `Elev (m)` County Exceed `03/01/2019` `03/02/2019` `03/03/2019` `03/04/2019` `03/05/2019` `03/06/2019`
# <dbl> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#1 340071001 39.6842… NJ Ancora Sta… 33.0 Camde… 4 36 31 35 46 39 38
#2 340170006 40.6702… NJ Bayonne 3.0 Hudso… 0 30 34 42 44 38 36
#3 340010006 39.4648… NJ Brigantine 5.0 Atlan… 2 36 34 36 48 43 41
#4 340070002 39.9344… NJ Camden Spr… 4.0 Camde… 4 32 32 36 44 37 35
#5 340273001 40.7876… NJ Chester 278.0 Morri… 0 34 43 47 49 44 44
#6 340150002 39.8003… NJ Clarksboro 12.0 Glouc… 2 30 29 30 43 37 37
# … with 240 more variables: `03/07/2019` <dbl>, `03/08/2019` <dbl>, `03/09/2019` <dbl>, `03/10/2019` <dbl>, `03/11/2019` <dbl>,
# `03/12/2019` <dbl>, `03/13/2019` <dbl>, `03/14/2019` <dbl>, `03/15/2019` <dbl>, `03/16/2019` <dbl>, `03/17/2019` <dbl>, `03/18/2019` <dbl>,
# `03/19/2019` <dbl>, `03/20/2019` <dbl>, `03/21/2019` <dbl>, `03/22/2019` <dbl>, `03/23/2019` <dbl>, `03/24/2019` <dbl>, `03/25/2019` <dbl>,
# `03/26/2019` <dbl>, `03/27/2019` <dbl>, `03/28/2019` <dbl>, `03/29/2019` <dbl>, `03/30/2019` <dbl>, `03/31/2019` <dbl>, `04/01/2019` <dbl>,
# `04/02/2019` <dbl>, `04/03/2019` <dbl>, `04/04/2019` <dbl>, `04/05/2019` <dbl>, `04/06/2019` <dbl>, `04/07/2019` <dbl>, `04/08/2019` <dbl>,
# `04/09/2019` <dbl>, `04/10/2019` <dbl>, `04/11/2019` <dbl>, `04/12/2019` <dbl>, `04/13/2019` <dbl>, `04/14/2019` <dbl>, `04/15/2019` <dbl>,
# `04/16/2019` <dbl>, `04/17/2019` <dbl>, `04/18/2019` <dbl>, `04/19/2019` <dbl>, `04/20/2019` <dbl>, `04/21/2019` <dbl>, `04/22/2019` <dbl>,
# `04/23/2019` <dbl>, `04/24/2019` <dbl>, `04/25/2019` <dbl>, `04/26/2019` <dbl>, `04/27/2019` <dbl>, `04/28/2019` <dbl>, `04/29/2019` <dbl>,
# `04/30/2019` <dbl>, `05/01/2019` <dbl>, `05/02/2019` <dbl>, `05/03/2019` <dbl>, `05/04/2019` <dbl>, `05/05/2019` <dbl>, `05/06/2019` <dbl>,
# `05/07/2019` <dbl>, `05/08/2019` <dbl>, `05/09/2019` <dbl>, `05/10/2019` <dbl>, `05/11/2019` <dbl>, `05/12/2019` <dbl>, `05/13/2019` <dbl>,
# `05/14/2019` <dbl>, `05/15/2019` <dbl>, `05/16/2019` <dbl>, `05/17/2019` <dbl>, `05/18/2019` <dbl>, `05/19/2019` <dbl>, `05/20/2019` <dbl>,
# `05/21/2019` <dbl>, `05/22/2019` <dbl>, `05/23/2019` <dbl>, `05/24/2019` <dbl>, `05/25/2019` <dbl>, `05/26/2019` <dbl>, `05/27/2019` <dbl>,
# `05/28/2019` <dbl>, `05/29/2019` <dbl>, `05/30/2019` <dbl>, `05/31/2019` <dbl>, `06/01/2019` <dbl>, `06/02/2019` <dbl>, `06/03/2019` <dbl>,
# `06/04/2019` <dbl>, `06/05/2019` <dbl>, `06/06/2019` <dbl>, `06/07/2019` <dbl>, `06/08/2019` <dbl>, `06/09/2019` <dbl>, `06/10/2019` <dbl>,
# `06/11/2019` <dbl>, `06/12/2019` <dbl>, `06/13/2019` <dbl>, `06/14/2019` <dbl>, …
>
如果我们想要一个特定的位置,另一种选择是add_column
library(tibble)
test %>%
add_column(Exceed = rowSums(.[7:252] > 70, na.rm= TRUE), .after = "County")
推荐阅读
- javascript - 量角器/茉莉花在无头铬上超时 - 错误:超时 - 异步回调
- google-apps-script - V8 和已弃用的 ES5 发布项目的错误
- c - 如何比较C中if语句中的两个字符串
- python - AttributeError: 'int' 对象没有属性 'read'
- c++ - 如何使用参数包和非类型模板值执行部分模板特化?
- javascript - 使用 forEach 的任务未完成
- powershell - 使用 Powershell 脚本扫描在线设备上的服务
- reactjs - 如何使用选项卡导航器将道具传递给 Screen 组件?
- swiftui - SWIFTUI - 如何更改数组中随机变量的值?
- android - 一种方法从 WebServer 获得响应,而另一种方法需要该方法的答案才能返回某些东西,不幸的是我得到了 null