R 条件过滤后的统计信息

R 条件过滤后的统计信息,r,filter,dplyr,R,Filter,Dplyr,如果已经在其他地方询问过,请提前道歉 我有多个数据帧,25列>1000行,如下所示: > head(Amsterdam_C02 <- Amsterdam %>% filter(Chemicals == "CO2")) Sample_ID Locality.Name Chemicals 1 VKB19xxxxxx Amsterdam CO2 2 VKB19xxxxxx Amsterdam CO2

如果已经在其他地方询问过,请提前道歉

我有多个数据帧,25列>1000行,如下所示:

> head(Amsterdam_C02 <- Amsterdam %>% filter(Chemicals == "CO2"))
  Sample_ID Locality.Name       Chemicals  
1 VKB19xxxxxx     Amsterdam        CO2     
2 VKB19xxxxxx     Amsterdam        CO2     
3 VKB1xxxxxxx     Amsterdam        CO2     
4 VKB1xxxxxxx     Amsterdam        CO2     
5 VKB1xxxxxxx     Amsterdam        CO2     
6 VKB1xxxxxxx     Amsterdam        CO2      
End.Date  Less.Than Activity.Value  Measuring.Unit 
1 2019-01-31  <      1.0714000     g/m³                                                      
2 2019-02-18         3.4609000     g/m³                                                     
3 2019-02-28  <      0.7020623     g/m³                                                      
4 2019-04-25         4.5563282     g/m³                                                      
5 2019-05-20         1.6000000     g/m³                                                       
6 2019-05-22  <      0.6000000     g/m³     
我希望获得Activity.Value的平均值、最大值、最小值和标准差,按月份分类,仅当小于小于时才考虑值您可以使用聚合:

可复制数据:

df <- data.frame(
  Date = c("2019-01-31", "2019-02-18", "2019-02-28", "2019-04-25", "2019-05-20", "2019-05-02"),
  Less.than = c("", "<", "", "<", "", ""),
  Activity.level = c(1.0714000, 3.4609000, 0.7020623, 0.7020623, 4.5563282, 1.6000000)) 
获得平均值的解决方案:

aggregate(df$Activity.level[!df$Less.than=="<"], by = list(sub("-(\\d+)-", "-\\1-", df$Date[!df$Less.than=="<"])), mean)
     Group.1         x
1 2019-01-31 1.0714000
2 2019-02-28 0.7020623
3 2019-05-02 1.6000000
4 2019-05-20 4.5563282

对于其他统计数据,请相应地替换平均值。

不幸的是,您拥有的数据数量非常有限。我从上面取了第二个数据,因为你的问题不需要考虑前半个数据

列Less.Than随mutate更改,以便在缺少<的位置引入所有NA。由于您的数据帧非常小,我添加了一个新的数据行。sd的结果显示为NA,因为没有足够的数据,从摘要中数据n的数量可以看出

然后过滤在End.Date中包含NA的所有行,按月分组,并使用dplyr中的摘要

新编辑:df是一个data.frame,您可以在classdf中看到。你也可以看看。
那么我已经做出了两个选择。在不到的时间内过滤所有NA。我不知道你说的是什么意思。您的评论中是否缺少某些内容?很抱歉数据数量有限。谢谢你的建议。我有三点意见。在上面给出的示例中,您的脚本应该返回-对于1月份的4个统计数据,因为Activity.Value必须省略,因为小于.Than是我通过更改过滤器再次编辑了答案。现在不显示一月,二月将给出您期望的结果。谢谢您的建议。我仍然有一些问题需要计算所有具有