Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按变量将组_翻转为列,将列翻转为行dplyr_R_Dplyr_Format - Fatal编程技术网

按变量将组_翻转为列,将列翻转为行dplyr

按变量将组_翻转为列,将列翻转为行dplyr,r,dplyr,format,R,Dplyr,Format,提前感谢您的回复!我在Rstudio中工作,试图创建我的客户需要的特定表格格式。具体地说,我想将每个度量显示为一行,并将group_按变量显示为一列,在本例中为应用程序类型。我使用group_by按应用程序类型合并所有数据,并使用summarise函数创建新变量 subs <- data.frame( App_type = c('A','A','A','B','B','B','C','C','C','C'), Has_error = c(1,1,1,0,0,1,1,0,1,1),

提前感谢您的回复!我在Rstudio中工作,试图创建我的客户需要的特定表格格式。具体地说,我想将每个度量显示为一行,并将group_按变量显示为一列,在本例中为应用程序类型。我使用group_by按应用程序类型合并所有数据,并使用summarise函数创建新变量

subs <- data.frame(
  App_type = c('A','A','A','B','B','B','C','C','C','C'), 
  Has_error = c(1,1,1,0,0,1,1,0,1,1), 
  Has_critical_error = c(1,0,1,0,0,1,0,0,1,1)
)

在重塑为“long”之后,我们可以转向“wide”格式,然后将列名“name”更改为rowname

library(dplyr)
library(tidyr)
library(tibble)
subs %>% 
  group_by(App_type) %>% 
  summarise(
     total_sub = n(), 
     total_error = sum(Has_error), 
     total_critical_error = sum(Has_critical_error))     %>% 
  pivot_longer(cols = -App_type) %>% 
  pivot_wider(names_from = App_type, values_from = value) %>%
  mutate(TOTAL =  A + B + C) %>%
  column_to_rownames("name")
#                      A B C TOTAL
#total_sub            3 3 4    10
#total_error          3 1 3     7
#total_critical_error 2 1 2     5

或者另一个选项是从
data.table

library(data.table)
data.table::transpose(setDT(out), make.names = 'App_type',
      keep.names = 'name')[, TOTAL := A + B + C][]
其中,
out
是OP的汇总输出

out <- subs %>% 
        group_by(App_type) %>% 
        summarise(
          total_sub = n(), 
          total_error = sum(Has_error), 
          total_critical_error = sum(Has_critical_error)
          )

在重塑为“long”之后,我们可以转向“wide”格式,然后将列名“name”更改为rowname

library(dplyr)
library(tidyr)
library(tibble)
subs %>% 
  group_by(App_type) %>% 
  summarise(
     total_sub = n(), 
     total_error = sum(Has_error), 
     total_critical_error = sum(Has_critical_error))     %>% 
  pivot_longer(cols = -App_type) %>% 
  pivot_wider(names_from = App_type, values_from = value) %>%
  mutate(TOTAL =  A + B + C) %>%
  column_to_rownames("name")
#                      A B C TOTAL
#total_sub            3 3 4    10
#total_error          3 1 3     7
#total_critical_error 2 1 2     5

或者另一个选项是从
data.table

library(data.table)
data.table::transpose(setDT(out), make.names = 'App_type',
      keep.names = 'name')[, TOTAL := A + B + C][]
其中,
out
是OP的汇总输出

out <- subs %>% 
        group_by(App_type) %>% 
        summarise(
          total_sub = n(), 
          total_error = sum(Has_error), 
          total_critical_error = sum(Has_critical_error)
          )

非常感谢你!这正是我需要的。非常感谢!这正是我需要的。