是否可以从 dplyr 管道调用 dcast 函数?
Is it possible to call dcast function from dplyr pipelines?
是否可以在 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?如果是这样,这里的第一个参数是什么?
dcast
中的 data
参数在 %>%
中并不真正需要,因为它隐含地假定数据是从上一步传递过来的任何数据。我们可以指定 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
(以及更多)和 return一个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
是否可以在 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?如果是这样,这里的第一个参数是什么?
dcast
中的 data
参数在 %>%
中并不真正需要,因为它隐含地假定数据是从上一步传递过来的任何数据。我们可以指定 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
(以及更多)和 return一个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