获取列名,将它们拆分并将它们融合到一个数据框中
Taking columns names, splitting them and melting them into a dataframe
我有一个跨越 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
当我尝试将 id.vars
添加到我的 melt 时,我看到错误说 Error: id variables not found in data: Month-Year
。
但是当我创建一个 for 循环来遍历所有列名时,它给我带来了错误。任何方向都会很棒。
这是根据我对您的数据的理解摘录的示例:
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
我有一个跨越 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
当我尝试将 id.vars
添加到我的 melt 时,我看到错误说 Error: id variables not found in data: Month-Year
。
但是当我创建一个 for 循环来遍历所有列名时,它给我带来了错误。任何方向都会很棒。
这是根据我对您的数据的理解摘录的示例:
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