r - 展开数据框列
问题描述
假设我有以下形式的 data.frame 或 data.table:
df <- data.frame("date"=c("2012-11-07", "2012-11-07", "2012-11-08", "2012-11-08", "2012-11-06", "2012-11-06"),
"id"=c(1,2, 1, 2, 2, 1),
"val"=c(100, 101, 102, 103, 104, 105))
我喜欢扩展它,以便每个id
都有自己的列,其中包含val
给定的列date
,即它应该采用形式
df.new <- data.frame("date"=c("2012-11-06", "2012-11-07", "2012-11-08"),
"1"=c(105, 100, 102),
"2"=c(104, 101, 103))
是否存在可以执行此操作的 data.frames 或 data.tables 方法?
解决方案
这是否有效:
library(dplyr)
library(tidyr)
df %>% pivot_wider(names_from = id, values_from = val, names_prefix = 'X')
# A tibble: 3 x 3
date X1 X2
<chr> <dbl> <dbl>
1 2012-11-07 100 101
2 2012-11-08 102 103
3 2012-11-06 105 104
推荐阅读
- powershell - 有选择地避免在ansible中将敏感数据写入日志(不使用nolog)
- java - 如何将多个数据字符串发送回 MainActivity?
- java - java.sql.SQLException:具有此缓存名称的连接缓存已禁用
- javascript - 有没有办法获得 x 天前的日期?(日期算术)
- sql - 如何将此原始查询转换为雄辩的?
- javascript - Jquery- 从 HTML 表创建 JavaScript 对象
- java - 如何将 RecyclerView 的引用传递给另一个活动
- c# - 警报未访问 BroadcastReceiver
- c - 将新字符串值分配给 char 数组时出错
- html - 如何在css中移动单选按钮