我有以下数据框:
grp dates count
A 2018-01-01 10
A 2018-01-02 20
A 2018-01-03 25
A 2018-01-04 30
B 2018-01-03 10
B 2018-01-04 30
...
但是,我想以这种形式使用它:
dates A B ...
2018-01-01 10 NA
2018-01-02 20 NA
2018-01-03 25 10
2018-01-04 30 30
最简单的转换方法是什么?哪种形式更好?
grp <- c("A", "A", "A", "A", "B", "B")
count <- c(10, 20, 25, 30, 10, 30)
dates <- c("2018-01-01", "2018-01-02", "2018-01-03", "2018-01-04", "2018-01-03", "2018-01-04")
df <- data.frame(grp, count, dates)
df
答案 0 :(得分:1)
您的dates
向量与您的节目示例数据不同,因为它具有重复的日期2018-01-01
。假设这是一个错误,您可以执行以下操作:
grp <- c("A", "A", "A", "A", "B", "B")
count <- c(10, 20, 25, 30, 10, 30)
dates <- c("2018-01-01", "2018-01-02", "2018-01-03", "2018-01-04", "2018-01-03", "2018-01-04")
df <- data.frame(grp, count, dates)
library(tidyr)
df %>% pivot_wider(names_from = grp, values_from = count)
#> # A tibble: 4 x 3
#> dates A B
#> <fct> <dbl> <dbl>
#> 1 2018-01-01 10 NA
#> 2 2018-01-02 20 NA
#> 3 2018-01-03 25 10
#> 4 2018-01-04 30 30
由reprex package(v0.2.1)于2020-03-18创建