gpt4 book ai didi

python - 在 SQL 中查找罗马数字的范围

转载 作者:太空宇宙 更新时间:2023-11-04 10:31:37 25 4
gpt4 key购买 nike

我正在寻找一种在 SQL 语句中查找范围的方法。

我的数据是这样的

         COUNTRY PROTEIN  MG
1 China 42.8 II
2 China 42.3 III
3 China 41.9 III
4 United States 40.0 IV
5 China 43.2 I
6 China 42.5 IV
7 China 42.9 III
8 China 45.9 VI
9 Japan 42.3 VI
10 United States 40.9 III

我目前正在运行这样的语句,其中我获得了蛋白质值的平均值,但我不知道如何计算罗马数字的范围

select COUNTRY, avg(PROTEIN), MG from data group by COUNTRY

我希望我的输出看起来像这样(不正确的数字只是一个例子)

COUNTRY MEAN MG_RANGE
China 42.3 I-III
United States 45.2 I-VI

我将此文件作为 CSV 文件,因此我愿意接受 R 和 Python 中的替代方案,它们会给我相同的输出。它可以是数字,也可以是最简单的输出。

最佳答案

在 R 中,utils 包有一个非导出函数 .roman2numeric(),用于将字符罗马数字转换为它们各自的数值。我们可以将罗马数字转换为数字,然后聚合以找到一个国家/地区内的范围。

(dat$MG2 <- utils:::.roman2numeric(as.character(dat$MG))
# 2 3 3 4 1 4 3 6 6 3
dat
# COUNTRY PROTEIN MG MG2
# 1 China 42.8 II 2
# 2 China 42.3 III 3
# 3 China 41.9 III 3
# 4 UnitedStates 40.0 IV 4
# 5 China 43.2 I 1
# 6 China 42.5 IV 4
# 7 China 42.9 III 3
# 8 China 45.9 VI 6
# 9 Japan 42.3 VI 6
# 10 UnitedStates 40.9 III 3

为了(任意)找到每个国家/地区的 MG2 范围,我们可以这样做

aggregate(MG2 ~ COUNTRY, dat, range)
# COUNTRY MG2.1 MG2.2
# 1 China 1 6
# 2 Japan 6 6
# 3 UnitedStates 3 4

关于python - 在 SQL 中查找罗马数字的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26132217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com