R 条件过滤后的统计信息
如果已经在其他地方询问过,请提前道歉 我有多个数据帧,25列>1000行,如下所示: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
> 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是我通过更改过滤器再次编辑了答案。现在不显示一月,二月将给出您期望的结果。谢谢您的建议。我仍然有一些问题需要计算所有具有