我有一个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/