【发布时间】:2018-07-11 01:26:26
【问题描述】:
我有以下两列数据框:地址、开始日期、纬度和经度。它是给定地址被清理的月份的列表。
df = data.frame(address = c("1 ex St", "2 ex St"),
year = (c(2011,2011)),
month = c("February","April"),
latitude = c(341.32,343.3),
longitude =c(432.3, 343.6))
所以数据看起来像这样
address year month latitude longitude
1 ex St 2011 February 341.32 432.3
2 ex St 2011 April 343.30 343.6
现在每一行代表一个特定的地址和地址被清理的特定月份。我想“扩展”数据,以便地址列中的每个条目在 2011 年每个月分解为 12 行。我还想添加一个虚拟变量,指示该批次之前是否已清理过。所以数据应该是这样的:
address year month latitude longitude cleaned
1 ex St 2011 January 341.32 432.3 0
1 ex St 2011 February 341.32 432.3 1
1 ex St 2011 March 341.32 432.3 1
1 ex St 2011 April 341.32 432.3 1
1 ex St 2011 May 341.32 432.3 1
1 ex St 2011 June 341.32 432.3 1
1 ex St 2011 July 341.32 432.3 1
1 ex St 2011 August 341.32 432.3 1
1 ex St 2011 Septmber 341.32 432.3 1
1 ex St 2011 October 341.32 432.3 1
1 ex St 2011 November 341.32 432.3 1
1 ex St 2011 December 341.32 432.3 1
2 ex St 2011 January 343.30 343.6 0
2 ex St 2011 February 343.30 343.6 0
2 ex St 2011 March 343.30 343.6 0
2 ex St 2011 April 343.30 343.6 1
2 ex St 2011 May 343.30 343.6 1
2 ex St 2011 June 343.30 343.6 1
2 ex St 2011 July 343.30 343.6 1
2 ex St 2011 August 343.30 343.6 1
2 ex St 2011 Septmber 343.30 343.6 1
2 ex St 2011 October 343.30 343.6 1
2 ex St 2011 November 343.30 343.6 1
2 ex St 2011 December 343.30 343.6 1
是否有包或功能可以让我以这种方式按月扩展我的数据?我看过融化和重塑包装,但它们似乎不适用于我的情况。我不一定要寻找答案,只是一些关于使用哪些工具的指导!
编辑:我使用了以下答案,但清理后的列仍然是。这是输出。
month address year latitude longitude cleaned
1 January 1 ex St 2011 341.32 432.3 0
2 February 1 ex St 2011 341.32 432.3 1
3 March 1 ex St 2011 341.32 432.3 0
4 April 1 ex St 2011 341.32 432.3 1
5 May 1 ex St 2011 341.32 432.3 0
6 June 1 ex St 2011 341.32 432.3 0
7 July 1 ex St 2011 341.32 432.3 0
8 August 1 ex St 2011 341.32 432.3 0
9 September 1 ex St 2011 341.32 432.3 1
10 October 1 ex St 2011 341.32 432.3 1
11 November 1 ex St 2011 341.32 432.3 0
12 December 1 ex St 2011 341.32 432.3 1
13 January 2 ex St 2011 343.3 343.6 1
14 February 2 ex St 2011 343.3 343.6 1
15 March 2 ex St 2011 343.3 343.6 0
16 April 2 ex St 2011 343.3 343.6 0
17 May 2 ex St 2011 343.3 343.6 1
18 June 2 ex St 2011 343.3 343.6 0
19 July 2 ex St 2011 343.3 343.6 1
20 August 2 ex St 2011 343.3 343.6 0
21 September 2 ex St 2011 343.3 343.6 0
22 October 2 ex St 2011 343.3 343.6 1
23 November 2 ex St 2011 343.3 343.6 1
24 December 2 ex St 2011 343.3 343.6 0
我怀疑 na.locf() 函数不起作用,因为清理后的列是从 0 到 1 采样的,并且其中没有任何 NA 要更改。因此,现在清理的列只是 0 和 1 的随机样本。我可以使用其他函数/策略来让 1 和 0 对应于地址被清理之前和之后吗?
【问题讨论】:
标签: r dplyr reshape tidyr melt