r - 重构数据框
问题描述
我有以下数据框:
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
解决方案
您的dates
向量与您展示的示例数据不同,因为它有一个重复的 date 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 包(v0.2.1)于 2020-03-18 创建
推荐阅读
- angular - ng build后如何使用所需的功能?
- java - Java类内部静态接口的使用
- scikit-learn - 参数“coef0”是否表示 sklearn.svm.SVC 方法中的特定系数?
- c# - 检测用户何时暂时停止在 UITextField Xamarin iOS 上输入
- jgit - 来自 git.pull().call() 的受影响文件列表
- udp - 如何使用 Gstreamer 命令行在数据包中发送一行
- python - 按值排序字典
- c# - 为什么我的跳跃动画在中间停止并返回空闲?
- angularjs - 将此多重条件转换为 ng 类条件
- kubernetes - 如何专门为 Pod 创建 PV