2017-09-18 34 views
0

我正在尋找一個簡單的答案如下:R:與unfd值bind_rows

樣本數據,DATA4和DATA3相似,數據1和數據2是相似的:

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這會給出錯誤Error in bind_rows_(x,.id):列X__2不能從數字轉換成字符。但感謝您的解釋! – ima

回答

2

基本上,您需要將"Undf"替換爲實際的NA,否則列類型必須是包含"Undf"的字符。您可以在加載後執行此操作,但更好的選擇是在加載read_excel()期間使"Undf"等於NA

na參數爲read_excel()默認爲na = ""或空單元格。您可以添加到這樣的說法有點像

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

這樣做對每個文件和結合應該正常工作。