r - 我可以在 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]]
但我得到的是,如果每列中的数字相同,它们就会在同一个组中,我一直在尝试以其他方式解决它,但我最终没有得到我想要的。
解决方案
创建组更容易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、...。