2017-09-18 8 views
0

unfd値でbind_rows:R:私は、以下のための簡単な答えを探してい

サンプル・データは、DATA4及びDATA3は類似しており、DATA1とDATA2は類似しています

data4 <-           X__1  X__2 
                <chr>  <dbl> 
        No-C1-PG3.7-LDI0-LDE0-LB0.045-PDC0-D10 -12.27027 
        No-C0.95-PG3.7-LDI0-LDE0-LB0.045-PDC0-D10 Undf 

data1 <-          X__1  X__2 
       Yes-C0.9-PG3.7-LDI0-LDE0-LB0.045-PDC0-D10 -12.2 
       Yes-C0.85-PG3.7-LDI0-LDE0-LB0.045-PDC0-D10 20 
       Yes-C0.8-PG3.7-LDI0-LDE0-LB0.045-PDC0-D10 -15.2 
       Yes-C0.75-PG3.7-LDI0-LDE0-LB0.045-PDC0-D10 -19.2 

私は二つのデータセットの列をバインドしようとしている:私は、次のエラーが表示さ

data1 <- read_excel("~/location1.xlsx") 
data2 <- read_excel("~/location2.xlsx") 
data3 <- read_excel("~/location3.xlsx") 
data4 <- read_excel("~/location4.xlsx") 

YesFR <- rbind(data1,data2) 
NoFR <- rbind(data3, data4) 

Impact <- bind_rows(YesFR, NoFR)  

:bind_rows_で エラー(X、.ID): 列X__2することはできません文字から数値への変換

データのUndf文字と関係があり、NAに変換する必要があると思います。これを行う最も簡単な方法は何ですか。なぜdata3とdata4をバインドするときにこのメッセージは表示されませんか?

+0

「YesFR」の 'X_2'は数値で、' NoFR'の 'X_2'は文字です(あなたは' data4'に "Undf"があるので)。 'dplyr'の' bind_rows'は出力の最初の入力と同じ型を与えます。したがって、 'YesFR'の' X_2'は数値なので、バインディング時に 'NoFR'の' X_2'を数値に変換しようとしますが、失敗します。 'bind_rows(NoFR、YesFR)'を試して、同じエラーメッセージを投げるかどうか確認してください。 – useR

+0

データを見ることなく伝えるのは難しいです。 'data4 $ X__2 [data4 $ X__2 ==" Undf "] < - NA'そして再度rbindを試してください –

+0

@useRこれはbind_rows_(x、.id)でエラーErrorを返します:列X__2は数値を文字に変換します。しかし、説明のおかげで! – ima

答えて

2

"Undf"は、基本的にはNAに置き換える必要があります。それ以外の場合は、列のタイプが"Undf"を含む文字でなければならないからです。ロード後にこれを行うことができますが、より良い選択肢はread_excel()でローディング中にNAに相当する"Undf"に相当することです。

read_excel()の引数のデフォルトはna = ""または空のセルです。あなたはその引数に何かを追加することができます

read_excel("~/location1.xlsx", na = c("", "Undf")) 

これは、ファイルごとにこれを行い、バインディングは正常に動作します。

関連する問題