根据数据框R中的列总数创建列

时间:2018-12-13 16:41:56

标签: r dataframe

我每个月都必须导入一个excel文档,其中包含每月来自代理商的各种格式的数据。数据如下:

+---------+--------+--------+--------+
|Agency   | Jan-18 | Feb-18 | Mar-18 |
+---------+--------+--------+--------+
| Agency1 |  1,996 |  2,042 |  2,045 |
| Agency2 |    609 |    701 |    611 |
| Agency3 |  1,119 |  1,176 |  1,158 |
+---------+--------+--------+--------+

我希望数据框中有13列;一个为设施可运输的,另加12个月。在这种情况下,我想再创建9列。类似于“如果ncol(df)<13(考虑第一个变量),则创建13-ncol(df)列”。我需要执行此操作是因为我想一次重命名所有列,也不想根据不同数据集的列数(基于月份)手动进行重命名。

colnames(df)[1:13] <- c("Fac", "m.Jan", "m.Feb", "m.Mar", "m.Apr", "m.May", "m.Jun",
                         "m.Jul", "m.Aug","m.Sep", "m.Oct", "m.Nov", "m.Dec") 

我将不胜感激!预先谢谢你!

1 个答案:

答案 0 :(得分:0)

可能的解决方案如下。 指定工作目录后,您将读取数据

<header>
  <span>Test</span>
  <span>For a great logo</span>
</header>
<br/>
<h1>Test 1</h1>
<p>A first very good looking sentence.</p>
<h2>Test 2</h2>
<p>A second very good looking sentence.</p>
<h3>Test 3</h3>
<p>A third very good looking sentence.</p>
<h4>Test 4</h4>
<p>A fourth very good looking sentence.</p>

然后使用 if 语句检查数据集是否少于13列

data <- read.csv("filename.csv")

基本上,这里我要创建一个充满 NA 的矩阵,其行数与 data 和剩余的列数,以使最终数据帧 df 具有13列。

最后,根据需要重命名变量名称:

if (ncol(data) < 13) {
new_df <- as.data.frame( matrix(NA, nrow = nrow(data), ncol = 13 - ncol(data)) )
df <- cbind(data, new_df)
}

我希望这会有所帮助!