我正在try 编写一个代码,用于获取PM2.5的浓度数据表,计算AQI,将其放入表中,然后绘制结果.

无论我做什么,即使将AQI_类别作为一个有序的因素,它仍然在AQI量表上显示出"不健康"之前的"不健康",即使在AQI量表上,"UFSG"应该排在"不健康"之前.

以下是代码:

#concentration data in ug/m3
pm2.5_ugm3<- c(10.6,12.7,35.1, 2.5, 35.5,14.9, 20.2,1.3,6 ,17.4 ,40.1,60,19,5.5,3.8,10,9.9 ,4.3,36,15 ,3,7.2,16.4,26.5,1,2.5,18.8,19.2,14,3,12)

#calculate AQIs  
result = ifelse((pm2.5_ugm3>=0 & pm2.5_ugm3<=12), 50/12*(pm2.5_ugm3-0)+0, 
                ifelse((pm2.5_ugm3>=12.1 & pm2.5_ugm3<=35.4),(100-51)/(35.4-12.1)*(pm2.5_ugm3-12.1)+51, 
                       ifelse((pm2.5_ugm3>=35.5 & pm2.5_ugm3<=55.4), (150-101)/(55.4-35.5)*(pm2.5_ugm3-35.5)+101, 
                              ifelse((pm2.5_ugm3>=55.5 & pm2.5_ugm3<=150.4), (200-151)/(150.4-55.5)*(pm2.5_ugm3-55.5)+151,"NA" ))))

#create AQI object that rounds result to 0 digits
AQI <- round(as.numeric(result), digits = 0)

#calculate AQI result meaning
AQI_Category <- (ifelse((AQI>=0 & AQI<=50), "Good", 
                                 ifelse((AQI>=51 & AQI<=100),"Moderate", 
                                        ifelse((AQI>=101 & AQI<=150), "Unhealthy for Sensitive Groups", 
                                               ifelse((AQI>=151 & AQI<=200), "Unhealthy","NA" )))))
str(AQI_Category)


#make a table
AQI_Table <- data.frame(pm2.5_ugm3,AQI,AQI_Category)

#orders AQI category by magnitude
AQI_Table$AQI_Category <- as.factor(ordered(AQI_Table$AQI_Category, levels =c('Good','Moderate','Unhealthy for Sensitive Groups','Unhealthy')))
str(AQI_Table)



#stripchart & boxplot

stripchart(AQI ~ AQI_Category, vertical= TRUE, method = "jitter",
           pch = 16,
           col = c('forestgreen','goldenrod','orange1','firebrick'),
           main = "January 2024 AQI")

我总是拿到附呈的图表.有什么好主意吗?提前谢谢!

此外,此代码一直错误地对级别进行排序:

AQI_Category <- as.factor(ordered(ifelse((AQI>=0 & AQI<=50), "Good", 
                       ifelse((AQI>=51 & AQI<=100),"Moderate", 
                              ifelse((AQI>=101 & AQI<=150), "Unhealthy for Sensitive Groups", 
                                     ifelse((AQI>=151 & AQI<=200), "Unhealthy","NA" ))))))

它提供了: "级别:好、中等、不健康、对敏感人群不健康"

看来我的排序因子排序错了,我不知道为什么?

try 将AQI分类作为一个有序的因素,希望它能将它们放在正确的顺序中,它一直将UFSG放在不健康之前

推荐答案

我认为您意外地使用了向量AQIAQI_Category,而不是数据框列AQI_Table$AQIAQI_Table$AQI_Category.只需一行代码,将data参数添加到绘图中,即可解决此问题.

stripchart(AQI ~ AQI_Category, vertical= TRUE, method = "jitter",
           pch = 16,
           col = c('forestgreen','goldenrod','orange1','firebrick'),
           main = "January 2024 AQI",
           data = AQI_Table)

output

这可以通过考虑好的变量名来防止.对于AQI_Table$AQI_Category来说,像aqi$category这样的名字会更好.

R相关问答推荐

如何在R中正确对齐放射状图中的文本

编码变量a、b、c以匹配来自另一个数据点的变量x

根据选中三个复选框中的一个或两个来调整绘图

用相同方法得到不同函数的ROC最优截断值

如何在区分不同条件的同时可视化跨时间的连续变量?

在R中,如何将变量(A,B和C)拟合在同一列中,如A和B,以及A和C在同一面板中?

使用整齐的计算(curl -curl )和杂音

LOF中的插图短文字幕

在使用tidyModels和XGBoost的二进制分类机器学习任务中,所有模型都失败

R spatstat Minkowski Sum()返回多个边界

如何在科学记数法中显示因子

条形图顶部与其错误条形图不对齐

将标识符赋给事件序列,避免错误观察

R:如果为NA,则根据条件,使用列名模式将缺少的值替换为另一列中的值

为什么函数toTitleCase不能处理english(1),而toupper可以?

是否从列中删除★符号?

在不带max()的data.table中按组查找最后一个元素

将y轴格式更改为R中的百分比

如何修改Rust中的R字符串并将其赋给新的R变量,并使用extendr保留原始R字符串

如何使用包含要子集的值的列表或数据框来子集多个列?