首页 > 解决方案 > 我可以在 R 中使用对来区分月份

问题描述

    data(airquality)
a=airquality

convert_fahr_to_kelvin <- function(temp) {
     kelvin <- ((temp - 32) * (5 / 9)) + 273.15
     return(kelvin)
}
a[,4]=
convert_fahr_to_kelvin(a[,4])
oz=a[,1]
sr=a[,2]
wv=a[,3]
te=a[,4]
pairs(~oz+sr+wv+te,
col = c("orange") , 
      pch = c(18),
      labels = c("Ozono", "Irradiancia Solar", "Velocidad del viento","Temperatura"), 
      main = "Diagramas de dispersión por parejas")

这是我得到的图形

这就是我正在做的,但实际上我想区分月份,比如我的矩阵的 31 个第一个数字,从所有列中,颜色为绿色,例如,对于每个月,我试图将数字分组使用组:

    group <- NA
group[sr[1:31]]<-1
group[sr[32:61]]<-2
group[sr[62:92]]<-3
group[sr[93:123]]<-4
group[sr[124:153]]<-5

group[sr[1:31]]
group[sr[32:61]]
group[sr[62:92]]
group[sr[93:123]]
group[sr[124:153]]

这里的数字重复

但我得到的是,如果每列中的数字相同,它们就会在同一个组中,我一直在尝试以其他方式解决它,但我最终没有得到我想要的。

标签: r

解决方案


创建组更容易gl

group <- as.integer(gl(length(sr), 31, length(sr)))
table(group)
#group
#1  2  3  4  5 
#31 31 31 31 29 

在 OP 的代码中,'group' 被初始化为NA长度为 1。然后,它是基于 'sr' 的值分配的,而不仅仅是

group <- integer(length(sr))
group[1:31] <- 1
group[32:61] <- 2
  ...

而如果我们使用sr值作为索引

sr[1:31]
#[1] 190 118 149 313  NA  NA 299  99  19 194  NA 256 290 274  65 334 307  78 322  44   8 320  25  92  66 266  NA  13 252 223 279

然后更改为 1 的组值位于位置 190、118、149、313、...。


推荐阅读