我有一个txt,其中包含以下数据:

ranking index  tornado reports   hail reports   wind reports
0.3968208   9   1   7
0.156263    2   0   3
0.1444246   10  1   7
0.2830781   7   2   6
0.1258707   12  0   2
0.2452705   6   0   6
0.07492937  6   2   8
0.1862151   8   1   5
0.3258324   6   2   17
0.09579834  2   2   10
0.8557362   11  3   14
0.05694438  8   3   9
0.6755703   4   3   24
1.695709    14  0   5
1.242222    17  2   12
0.220234    7   1   7
0.5113825   6   0   6
0.2355718   3   0   12
0.0799512   1   1   6
1.267324    15  2   6
0.0862502   7   1   3
1.151916    33  2   6
0.06002221  9   0   17
0.2011567   11  5   17


考虑到冰雹报告的数量大于10,风力报告的数量大于20,龙卷风报告的数量大于30,我需要找到大风的可能性(等级指数大于0.25)。 5?

最佳答案

假设这是完整数据的一部分。以下基于dplyr的解决方案基于以下条件:hail_reports> 2&wind_reports> 2&tornado_reports> 5(否则该测试数据的概率为零)。对其进行适当修改以获取完整数据。

librray(dplyr)

df %>%
   filter (hail_reports > 2 & wind_reports > 2 & tornado_reports > 5) %>%
mutate(major = if_else(ranking_index > 0.25, 1, 0)) %>%     # major= 1: index > 0.25
  group_by(major) %>% summarize(n = n()) %>%
transmute(major, prob = n/sum(n))

#    major  prob
#    <dbl> <dbl>
#  1     0 0.667
#  2     1 0.333                     # major prob = 0.333


PS:总是最好避免在列名中留空格。例如。使用“ hail_reports”而不是“ hail报告”

关于r - 计算其他列中给定数据的概率,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51094923/

10-10 21:26
查看更多