gpt4 book ai didi

r - 加速运行 if.. else 循环在 R

转载 作者:行者123 更新时间:2023-12-04 16:54:10 24 4
gpt4 key购买 nike

有谁知道如何加快运行以下命令的速度?我想用字符串替换数字“月份”值......例如第 1 个月到“7 月”。

这个命令真的很慢,因为我试图在其上实现它的数据帧是巨大的!

for (i in 1:length(CO2$month)){
if(CO2$month[i]=='1') {CO2$months[i]<-'Jul'} else
if(CO2$month[i]=='2') {CO2$months[i]<-'Aug'} else
if(CO2$month[i]=='3') {CO2$months[i]<-'Sept'} else
if(CO2$month[i]=='4') {CO2$months[i]<-'Oct'} else
if(CO2$month[i]=='5') {CO2$months[i]<-'Nov'} else
if(CO2$month[i]=='6') {CO2$months[i]<-'Dec'} else
if(CO2$month[i]=='7') {CO2$months[i]<-'Jan'} else
if(CO2$month[i]=='8') {CO2$months[i]<-'Feb'} else
if(CO2$month[i]=='9') {CO2$months[i]<-'Mar'} else
if(CO2$month[i]=='10') {CO2$months[i]<-'Apr'} else
if(CO2$month[i]=='11') {CO2$months[i]<-'May'} else
if(CO2$month[i]=='12') {CO2$months[i]<-'Jun'}
}

最佳答案

你可以在没有循环和 if-else 的情况下做到这一点:

set.seed(21)
CO2 <- data.frame(month=as.character(sample(1:12,24,TRUE)),
stringsAsFactors=FALSE)
MonthAbbRotated <- month.abb[c(7:12,1:6)]
CO2$months <- MonthAbbRotated[as.numeric(CO2$month)]

如果您的 month column 并不是真正的字符,这更容易:
set.seed(21)
CO2 <- data.frame(month=sample(1:12,24,TRUE))
MonthAbbRotated <- month.abb[c(7:12,1:6)]
CO2$months <- MonthAbbRotated[CO2$month]

关于r - 加速运行 if.. else 循环在 R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13199221/

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