質問編集履歴

1 誤字

coretab

coretab score 14

2019/05/13 19:14  投稿

特定の条件で値の置換を行いたい
特定の条件で値の置換を行いたいです
現在R言語を使用して風配図の作成を試みています。
以下のような風向、風速の情報を、
```
direction velocity
1 350 3.3
2 120 1.1
3 240 2.9
4 150 3.5
5 150 3.3
6 240 1.1
7 340 2.9
8 130 3.5
```
条件にしたがって方角の名前の情報に書き換えたいと考えています。
```
条件    方角
0~90 NE
90~180 SE
180~270 SW
270~360 NW
```
最終的に、
```
direction velocity
1 NW 3.3
2 SE 1.1
3 SW 2.9
4 SE 3.5
5 SE 3.3
6 SW 1.1
7 NW 2.9
8 SE 3.5
```
このようなデータセットの作成を目指しているのですが、うまくいきませんでした。
何か良い方法があれば、教えて頂きたいです。
念の為、風配図を作成するプログラムを示します。
```R
#!/usr/bin/env Rscript
main=function()
{
setwd("./log")
files <- list.files(pattern = "\\.txt$")
for (file.name in files) {
ff.png <- sub('\\.[^.]*', ".png", file.name)
Data <- read.table(file.name, header=TRUE)
wind<-data.frame(direction=as.vector(Data$WD),velocity=as.numeric(as.vector(Data$WS)))
windrose<-data.frame(matrix(rep(0,16*5),ncol=16))
colnames(windrose)<-c("N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW")
rownames(windrose)<-c("[0,1]","(1,2]","(2,3]","(3,4] ","(4, ")
for ( i in 1:nrow(wind)){
if (wind$velocity[i]<=1) {
windrose[1,as.vector(wind$direction)[i]]<-windrose[1,as.vector(wind$direction)[i]]+1
} else if (wind$velocity[i]>1 & wind$velocity[i]<=2) {
windrose[2,as.vector(wind$direction)[i]]<-windrose[2,as.vector(wind$direction)[i]]+1
} else if (wind$velocity[i]>2 & wind$velocity[i]<=3) {
windrose[3,as.vector(wind$direction)[i]]<-windrose[3,as.vector(wind$direction)[i]]+1
} else if (wind$velocity[i]>3 & wind$velocity[i]<=4) {
windrose[4,as.vector(wind$direction)[i]]<-windrose[4,as.vector(wind$direction)[i]]+1
} else if (wind$velocity[i]>4) {
windrose[5,as.vector(wind$direction)[i]]<-windrose[5,as.vector(wind$direction)[i]]+1
}
}
#風配図
#install.packages("knitr")
#install.packages("climatol")
#install.packages("maps")
#install.packages("mapdata")
library(maps)
library(mapdata)
library(knitr)
kable(windrose)
library(climatol)
png(ff.png,width=800,height=800)
rosavent(windrose,5,5,ang=-3*pi/16,main="windrose(test)")
print(windrose)
dev.off()
}
}
main()
```
  • R

    840 questions

    R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る