質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
R

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

Q&A

解決済

1回答

7711閲覧

特定の条件で値の置換を行いたいです

coretab

総合スコア14

R

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

0グッド

0クリップ

投稿2019/05/13 10:12

編集2019/05/13 10: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

1#!/usr/bin/env Rscript 2 3main=function() 4{ 5 6 setwd("./log") 7 files <- list.files(pattern = "\.txt$") 8 9 for (file.name in files) { 10 11 ff.png <- sub('\.[^.]*', ".png", file.name) 12 13 Data <- read.table(file.name, header=TRUE) 14 15 wind<-data.frame(direction=as.vector(Data$WD),velocity=as.numeric(as.vector(Data$WS))) 16 17 windrose<-data.frame(matrix(rep(0,16*5),ncol=16)) 18 19 20 colnames(windrose)<-c("N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW") 21 rownames(windrose)<-c("[0,1]","(1,2]","(2,3]","(3,4] ","(4, ") 22for ( i in 1:nrow(wind)){ 23 if (wind$velocity[i]<=1) { 24 windrose[1,as.vector(wind$direction)[i]]<-windrose[1,as.vector(wind$direction)[i]]+1 25 } else if (wind$velocity[i]>1 & wind$velocity[i]<=2) { 26 windrose[2,as.vector(wind$direction)[i]]<-windrose[2,as.vector(wind$direction)[i]]+1 27 } else if (wind$velocity[i]>2 & wind$velocity[i]<=3) { 28 windrose[3,as.vector(wind$direction)[i]]<-windrose[3,as.vector(wind$direction)[i]]+1 29 } else if (wind$velocity[i]>3 & wind$velocity[i]<=4) { 30 windrose[4,as.vector(wind$direction)[i]]<-windrose[4,as.vector(wind$direction)[i]]+1 31 } else if (wind$velocity[i]>4) { 32 windrose[5,as.vector(wind$direction)[i]]<-windrose[5,as.vector(wind$direction)[i]]+1 33 } 34 } 35#風配図 36#install.packages("knitr") 37#install.packages("climatol") 38#install.packages("maps") 39#install.packages("mapdata") 40 41 42library(maps) 43library(mapdata) 44library(knitr) 45kable(windrose) 46library(climatol) 47png(ff.png,width=800,height=800) 48rosavent(windrose,5,5,ang=-3*pi/16,main="windrose(test)") 49print(windrose) 50 51dev.off() 52 53} 54 55} 56main() 57

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ifelse()を使うのがわかりやすいでしょう。

R

1deg2dir <- function(deg){ 2 deg <- deg %% 360 3 ifelse(deg<90, "NE", 4 ifelse(deg<180, "SE", 5 ifelse(deg<270, "SW", "NW") 6 )) 7} 8 9df <- read.table(text = "direction velocity 101 350 3.3 112 120 1.1 123 240 2.9 134 150 3.5 145 150 3.3 156 240 1.1 167 340 2.9 178 130 3.5", 18 header=T) 19print(df) 20 21df$dirname <- deg2dir(df$direction) 22print(df) 23

投稿2019/05/13 13:04

KojiDoi

総合スコア13671

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coretab

2019/05/14 06:06

ありがとうございます。 無事データを加工することができました! Rを扱うのが初めてだったのでとても助かります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問