按列r合并多个csv

时间:2016-12-08 14:48:37

标签: r

我有多个csv文件,这些文件包含一些相同的列以及不同的列。 例如,

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form method="post" action="#">
     <b>Airport:</b> &nbsp;&nbsp;&nbsp;&nbsp;
     <select size="1" name="arrivalairport" id="airport">
         <option value="">Airport 1</option>
         <option value="">Airport 2</option>
         <option value="">Airport 3</option>
      </select>
      <p>
      <b># Passengers:</b>&nbsp;&nbsp;&nbsp;&nbsp;
      <input type="number" name="arrivalnrpass" id="arrivalnrpass" size="3">
      <p>
      <b>Babyseat:</b>&nbsp;&nbsp;&nbsp;&nbsp;
      <input type="number" name="arrivalbaby" id="arrivalbaby" size="3">
      <p>
      <b>Price:</b>&nbsp;&nbsp;&nbsp;&nbsp;
      <input type="number" name="arrivalprice" id="arrivalprice" size="5">  &euro;
      <p>
      <input class="button" type="submit" value="Add" name="action">
 </form>

我尝试基于相同的列组合这些文件,但对于那些不同的列,我只是 包括所有列,但用NA填充单元格(对于那些没有该列的数据)。

所以我希望看到:

#1st.csv
col1,col2 
1,2

#2nd.csv
col1,col3,col4
1,2,3

#3rd.csv
col1,col2,col3,col5
1,2,3,4

这是我给出的r代码,但它返回一条错误消息

col1,col2,col3,col4,col5
1,2,NA,NA,NA            #this is 1st.csv
1,NA,2,3,NA             #this is 2nd.csv
1,2,3,NA,4              #this is 3rd.csv

有没有人知道任何替代或优雅的方式来获得预期的结果?

R版本是3.3.2。

1 个答案:

答案 0 :(得分:2)

您应该可以使用bind_rows

中的dplyr功能完成此操作
df1 <- read.csv(text = "col1, col2 
1,2", header = TRUE)

df2 <- read.csv(text = "col1, col3, col4
1,2,3", header = TRUE)

df3 <- read.csv(text = "col1, col2, col3, col5
1,2,3,4", header = TRUE)

library(dplyr)

res <- bind_rows(df1, df2, df3)
> res
  col1 col2 col3 col4 col5
1    1    2   NA   NA   NA
2    1   NA    2    3   NA
3    1    2    3   NA    4