根据列名在 R 数据框中创建列以制作时间序列
Create column in R dataframe based on name of the column to make a time series
我在 R 中有一个数据框,它有两列,如下所示。它有一列城市中的塔楼创建日期。数据表示在哪一天,一座城市安装了一座塔。例如4 月 1 日,在这几个城市安装了塔,所以这个数据一直持续到 2020 年。
df_example <- read_table2("c_date city_name
4/1/2016 Mbombela
4/1/2016 Ethekwini
4/1/2016 Ekurhuleni
4/1/2016 Prince Albert
4/1/2016 Ethekwini
4/1/2016 of Johannesburg
5/1/2016 Prince Albert
5/1/2016 Ethekwini
5/1/2016 of Johannesburg")
现在,我想基于上面的数据框创建一个数据框,其中每个 City 都有一个唯一的列,它告诉了次数,这已经连续出现在timeseries,增加了2016年到2020年每个城市到时候有多少塔的计数,所以变成了每个城市的时间序列数据。
Desired_output
#> c_date Mbombela Ethekwini Ekurhuleni Prince of
#> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 4/1/2016 1 2 1 1 1
#> 2 5/1/2016 1 3 1 2 2
你想要这个吗(我不确定,因为不够data/details)
library(tidyverse)
data %>%
group_by(c_date, city_name) %>%
summarise(val = n()) %>%
pivot_wider(
id_cols = c_date,
names_from = city_name,
values_from = val,
values_fill = 0
)
使用软件包 tidyr
和 dplyr
。假设你的 data.frame 被命名为 df
.
library(dplyr)
library(tidyr)
dates <- df %>% distinct(c_date)
df %>% group_by(city_name, c_date) %>%
summarise(buildings=n()) %>%
inner_join(dates, by=c('c_date')) %>%
group_by(city_name) %>%
arrange(c_date) %>%
mutate(buildings=cumsum(buildings, na.rm=TRUE)) %>%
pivot_wider(names_from=city_name, values_from=buildings, values_fill=0)
这是我对这个问题的看法
library(tidyverse)
df_example <- read_table2("c_date city_name
4/1/2016 Mbombela
4/1/2016 Ethekwini
4/1/2016 Ekurhuleni
4/1/2016 Prince Albert
4/1/2016 Ethekwini
4/1/2016 of Johannesburg
5/1/2016 Prince Albert
5/1/2016 Ethekwini
5/1/2016 of Johannesburg")
#> Warning: 4 parsing failures.
#> row col expected actual file
#> 4 -- 2 columns 3 columns literal data
#> 6 -- 2 columns 3 columns literal data
#> 7 -- 2 columns 3 columns literal data
#> 9 -- 2 columns 3 columns literal data
df_example %>%
mutate(value = 1) %>%
pivot_wider(names_from = city_name,values_fn = sum,values_fill = 0) %>%
mutate(across(.cols = -c_date,.fns = cumsum))
#> # A tibble: 2 x 6
#> c_date Mbombela Ethekwini Ekurhuleni Prince of
#> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 4/1/2016 1 2 1 1 1
#> 2 5/1/2016 1 3 1 2 2
由 reprex package (v0.3.0)
于 2020-12-07 创建
我在 R 中有一个数据框,它有两列,如下所示。它有一列城市中的塔楼创建日期。数据表示在哪一天,一座城市安装了一座塔。例如4 月 1 日,在这几个城市安装了塔,所以这个数据一直持续到 2020 年。
df_example <- read_table2("c_date city_name
4/1/2016 Mbombela
4/1/2016 Ethekwini
4/1/2016 Ekurhuleni
4/1/2016 Prince Albert
4/1/2016 Ethekwini
4/1/2016 of Johannesburg
5/1/2016 Prince Albert
5/1/2016 Ethekwini
5/1/2016 of Johannesburg")
现在,我想基于上面的数据框创建一个数据框,其中每个 City 都有一个唯一的列,它告诉了次数,这已经连续出现在timeseries,增加了2016年到2020年每个城市到时候有多少塔的计数,所以变成了每个城市的时间序列数据。
Desired_output
#> c_date Mbombela Ethekwini Ekurhuleni Prince of
#> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 4/1/2016 1 2 1 1 1
#> 2 5/1/2016 1 3 1 2 2
你想要这个吗(我不确定,因为不够data/details)
library(tidyverse)
data %>%
group_by(c_date, city_name) %>%
summarise(val = n()) %>%
pivot_wider(
id_cols = c_date,
names_from = city_name,
values_from = val,
values_fill = 0
)
使用软件包 tidyr
和 dplyr
。假设你的 data.frame 被命名为 df
.
library(dplyr)
library(tidyr)
dates <- df %>% distinct(c_date)
df %>% group_by(city_name, c_date) %>%
summarise(buildings=n()) %>%
inner_join(dates, by=c('c_date')) %>%
group_by(city_name) %>%
arrange(c_date) %>%
mutate(buildings=cumsum(buildings, na.rm=TRUE)) %>%
pivot_wider(names_from=city_name, values_from=buildings, values_fill=0)
这是我对这个问题的看法
library(tidyverse)
df_example <- read_table2("c_date city_name
4/1/2016 Mbombela
4/1/2016 Ethekwini
4/1/2016 Ekurhuleni
4/1/2016 Prince Albert
4/1/2016 Ethekwini
4/1/2016 of Johannesburg
5/1/2016 Prince Albert
5/1/2016 Ethekwini
5/1/2016 of Johannesburg")
#> Warning: 4 parsing failures.
#> row col expected actual file
#> 4 -- 2 columns 3 columns literal data
#> 6 -- 2 columns 3 columns literal data
#> 7 -- 2 columns 3 columns literal data
#> 9 -- 2 columns 3 columns literal data
df_example %>%
mutate(value = 1) %>%
pivot_wider(names_from = city_name,values_fn = sum,values_fill = 0) %>%
mutate(across(.cols = -c_date,.fns = cumsum))
#> # A tibble: 2 x 6
#> c_date Mbombela Ethekwini Ekurhuleni Prince of
#> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 4/1/2016 1 2 1 1 1
#> 2 5/1/2016 1 3 1 2 2
由 reprex package (v0.3.0)
于 2020-12-07 创建