2017-01-20 4 views
0

外部スクリプトストアドプロシージャを使用してSQL Server 2016からRにデータを渡して処理しています。R - Data.FrameセルがNULL /空白であるかどうかをテストします。

データフレーム内の[I、11]の位置にあるセルが整数値を持つかどうかによって、eを実行するかしないかを指定します。

for(i in 1:2){ 
    if(d1[i,11]==""){ 
     d2[i,1]<-d1[i,1] 
     d2$Ledger<-d1[i,2] 
     d2$Account<-d1[i,3] 
     d2$Title<-d1[i,4] 
     d2$ActualTitle<-d1[i,5] 
     d2$AccountNumber<-d1[i,6] 
     d2$Sortcode<-d1[i,7] 
     d2$PostCode1<-d1[i,8] 
     d2$PostCode2<-d1[i,9] 
     d2$AddressName<-d1[i,10] 
     d2$MatchedID<-d1[i,11] 
    } 

私はこれを行う方法を見つけるのに苦労しています。助けてください。

答えて

0

さらにテストでは、格納された値がRでNAであり、関数is.na(expression)を使用してブールリターンが得られたことが判明しました。

for(i in 1:2){ 
    if(is.na(d1[i,11])){ 
     d2[i,1]<-d1[i,1] 
     d2$Ledger<-d1[i,2] 
0

最良の方法はループを使用することではありません。ベクトル演算は、データフレームのサイズが大きい場合に優れています。

if(is.na(item)) 

項目が他の<NA>FALSEである場合、これはTRUEを返します。何かが<NA>、使用されているかを確認する

。 SQLに欠損値がある場合は、Rには<NA>と表示されます。同様に、何かが整数であるかどうかを確認するためにis.integer(item)を使用できます。

> dataframe$columnname <- ifelse(is.na(dataframe$column), value_for_if_satisfied, value_for_else_satisfied) 

dataframe$columnname[which(is.na(dataframe$column))] <- new_value 

あなたも同じように同じことを行うためにifelseを使用することができます。

は、その後、データフレームの列に選択的に操作するために、以下を使用することができます

関連する問題