r - 在 R 中将键值表透视到整洁的数据框
问题描述
我有一个格式如下的数据框:
df_before <-
tibble(
key = rep(c('rank', 'name', 'metric'), 5),
value = c(
1, 'name1', 4352,
2, 'name2', 2181,
3, 'name3', 1399,
4, 'name4', 1087,
5, 'name5', 1010
))
# A tibble: 15 x 2
key value
<chr> <chr>
1 rank 1
2 name name1
3 metric 4352
4 rank 2
5 name name2
6 metric 2181
7 rank 3
8 name name3
9 metric 1399
10 rank 4
11 name name4
12 metric 1087
13 rank 5
14 name name5
15 metric 1010
我需要把它变成这种格式:
df_after <-
tibble(
rank = 1:5,
name = c('name1', 'name2', 'name3', 'name4', 'name5'),
metric = c(4352, 2181, 1399, 1087, 1010)
)
# A tibble: 5 x 3
rank name metric
<int> <chr> <dbl>
1 1 name1 4352
2 2 name2 2181
3 3 name3 1399
4 4 name4 1087
5 5 name5 1010
我知道其中有枢轴函数,tidyr
但我无法从文档中找出语法。Tidyverse 是首选,但任何库或基本函数都可以。
解决方案
在基础 R 中,您可以执行以下操作:
unstack(df_before,value~key)
metric name rank
1 4352 name1 1
2 2181 name2 2
3 1399 name3 3
4 1087 name4 4
5 1010 name5 5
要将类型转换为整数/双精度,您可以执行以下操作:
type.convert(unstack(df_before,value~key))
推荐阅读
- c++ - -1073741571 (0xC00000FD) 代码块 C++ 中的错误
- api - 仅当我的 API 在 Vuejs 的上下文中返回“null”字符串类型时,如何显示“未连接”
- excel - VBA 单元格偏移替换以前的单元格值
- powershell - 分配给 $null 的对象属性不测试 $null 为真
- fiware - FIWARE - iotagent-node-lib 支持 ngsiVersion “ld”
- node.js - Firestore 云功能找不到要更新的文档
- java - 我们如何在 Java 中实现日期拆分/中断
- javascript - 变异等待数组被大json文件填充,vuex
- angular - Angular 如何在没有 NgModel 的情况下默认检查单选按钮
- firebase - 在flutter firebase中实现全文搜索时出错