问题描述
我有一个涵盖20多年的房屋价值数据框架。列名称是月份和年份,即04-1996,05-1996,06-1996
,依此类推。我想绘制几个月和几年的时间序列数据,并必须采用这些列名称并将其绘制到结果数据框中。
我尝试过此测试:
df2<-melt(df,na.rm=T,id.vars=c("RegionName","CountyName"),measure.vars=c("04-1996","05-1996","06-1996"))
它给了我相应行中的年份等,很好。我关闭了。
我目前有:
Region City Apr-1996 May-1996 June-1996
1 10025 New York 10000 10000 10000
2 10023 New York 10000 10000 10000
3 10128 New York 10000 10000 10000
一直到2015年5月。
理想情况下,我希望看起来像这样:
Region City Month Year Value
1 10025 New York 04 1996 123100
2 10023 New York 05 1997 72700
3 10128 New York 06 1998 91600
当我尝试向熔体中添加Error: id variables not found in data: Month-Year
时看到错误消息id.vars
。
但是,当我创建一个for循环来遍历所有列名时,它会me绕我,给我错误。任何方向都很棒。
解决方法
以下是我对您的数据了解的示例:
library(dplyr)
lirary(tidyr)
tb <- tibble(Region = c(10025,10023),City = c("New York","New York"),`04-1996` = c(10,20),`05-1996` = c(20,30))
结果:
# A tibble: 2 x 4
Region City `04-1996` `05-1996`
<dbl> <chr> <dbl> <dbl>
1 10025 New York 10 20
2 10023 New York 20 30
计算:
tb %>%
tidyr::pivot_longer(-c(Region,City),names_to = "M-Y",values_to = "Value") %>%
tidyr::separate("M-Y",into = c("Month","Year"),sep = "-")
结果:
Region City Month Year Value
<dbl> <chr> <chr> <chr> <dbl>
1 10025 New York 04 1996 10
2 10025 New York 05 1996 20
3 10023 New York 04 1996 20
4 10023 New York 05 1996 30