我每个月都必须导入一个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")
我将不胜感激!预先谢谢你!
答案 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)
}
我希望这会有所帮助!