R 如何过滤TIBLE并将其转换为矩阵?

R 如何过滤TIBLE并将其转换为矩阵?,r,tidyverse,R,Tidyverse,我制作了一个有三列的TIBLE。癌症状态(病例/对照)、特征A(x1)和特征B(x2) 癌症像这样: library(dplyr) cancer %>% summarise(meanx1 = mean(x1[case == "case"]), meanx2 = mean(x2[case == "case"])) # A tibble: 1 x 2 meanx1 meanx2 <dbl> <dbl> 1 2

我制作了一个有三列的TIBLE。癌症状态(病例/对照)、特征A(x1)和特征B(x2)

癌症像这样:

library(dplyr)
cancer %>% 
  summarise(meanx1 = mean(x1[case == "case"]),
            meanx2 = mean(x2[case == "case"]))

# A tibble: 1 x 2
  meanx1 meanx2
   <dbl>  <dbl>
1      2      6
如果您已更新到dplyr
1.0.0,则使用
cross

cancer %>% 
  summarise(across(x1:x2, ~mean(x1[case == "case"]), .names = "mean_{col}")) %>% 
  as.matrix()

     mean_x1 mean_x2
[1,]       2       2

使用新的dplyr 1.0.0,您可以

library(tidyverse)

cancer <- tibble(case = factor(c(rep(1,3),rep(0,3)),
                               levels = c(0,1),
                               labels = c("control","case")),
                 x1 = c(1,2,3,4,2,3),
                 x2 = c(4,8,6,0,2,4))

cancer %>% 
  filter(case == "case") %>% 
  summarize(across(x1:x2, mean))
库(tidyverse)
癌症%
过滤器(案例==“案例”)%>%
汇总(横向(x1:x2,平均值))
cancer %>% 
  summarise(meanx1 = mean(x1[case == "case"]),
            meanx2 = mean(x2[case == "case"])) %>% 
  as.matrix()

     meanx1 meanx2
[1,]      2      6
cancer %>% 
  summarise(across(x1:x2, ~mean(x1[case == "case"]), .names = "mean_{col}")) %>% 
  as.matrix()

     mean_x1 mean_x2
[1,]       2       2
library(tidyverse)

cancer <- tibble(case = factor(c(rep(1,3),rep(0,3)),
                               levels = c(0,1),
                               labels = c("control","case")),
                 x1 = c(1,2,3,4,2,3),
                 x2 = c(4,8,6,0,2,4))

cancer %>% 
  filter(case == "case") %>% 
  summarize(across(x1:x2, mean))