r - 是否可以从 dplyr 管道调用 dcast 函数?
问题描述
是否可以在 dplyr 管道中使用 dcast 功能?我应该如何定义 dcast 的第一个参数?如何首先使用 dplyr 过滤数据,然后使用 reshape2 将其转换为宽格式?
set.seed(45)
df <- data.frame(
name = rep(c("firstName", "secondName"), each=4),
numbers = rep(1:4, 2),
value = rnorm(8)
)
我想做这个:
library(dplyr)
library(reshape2)
df <- df %>%
filter(numbers<>4) %>%
dcast(...)
是否可以在 dplyr 转换中使用 dcast?如果是这样,这里的第一个论点是什么?
解决方案
in的data
参数dcast
并不是真正需要的,%>%
因为它隐含地假设数据是从上一步传递过来的任何数据。我们可以指定formula
'value.var' 列
library(dplyr)
df %>%
filter(numbers != 4) %>%
reshape2::dcast(name ~ numbers, value.var = 'value')
# name 1 2 3
#1 firstName 0.3407997 -0.7033403 -0.3795377
#2 secondName -0.8981073 -0.3347941 -0.5013782
如果我们需要指定data
df %>%
filter(numbers != 4) %>%
reshape2::dcast(., name ~ numbers, value.var = 'value')
使用tidyverse
,有pivot_wider
(从- 成功 reshape2 函数)执行与(以及更多)tidyr
类似的整形并返回reshape2::dcast
tibble
library(tidyr)
df %>%
filter(numbers != 4) %>%
pivot_wider(names_from = numbers, values_from = value)
# A tibble: 2 x 4
# name `1` `2` `3`
# <chr> <dbl> <dbl> <dbl>
#1 firstName 0.341 -0.703 -0.380
#2 secondName -0.898 -0.335 -0.501
推荐阅读
- python - Python Selenium 查找元素 XPath 不起作用
- dropbox - 审查 Dropbox 活动
- javascript - 使用 chartist 在 JavaScript 中对饼图的 GET / POST 请求
- python - Anaconda中的python与原始python之间的区别
- sql - SQL 搜索中的求和函数
- qt - 如何在 Qt 应用程序中使用 MFC Ribbon?
- keras - 如何在keras中仅打印模型最后n层的摘要
- matlab - 在特定条件下删除元胞数组的行范围,MATLAB
- jquery-selectors - 在 puppteer 中链接查询选择器
- vi - 如何为vim语法突出显示对比色