如何解决是否可以从 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?如果是这样,这里的第一个参数是什么?
解决方法
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
(来自 tidyr
- 成功 reshape2 函数)执行与 reshape2::dcast
类似的重塑(以及更多)并返回 {{1} }
tibble
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。