Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.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
在R中创建频率分析结果表_R_Dplyr_Crosstab_Tabular - Fatal编程技术网

在R中创建频率分析结果表

在R中创建频率分析结果表,r,dplyr,crosstab,tabular,R,Dplyr,Crosstab,Tabular,我需要创建一个基于特定模板的特定类型的表 这是我的数据: df = structure(list(group = c(1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 1L), degree = structure(c(1L, 1L, 1L, 1L, 1L, 3L, 2L, 1L, 1L, 1L), .Label = c("Mild severit

我需要创建一个基于特定模板的特定类型的表

这是我的数据:

df = structure(list(group = c(1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 1L),
                    degree = structure(c(1L, 1L, 1L, 1L, 1L, 3L, 2L, 1L, 1L, 1L),
                                       .Label = c("Mild severity", "Moderate severity", "Severe severity"),
                                       class = "factor")), 
               .Names = c("group", "degree"), 
               class = "data.frame", 
               row.names = c(NA, -10L))
我做了一个交叉表:

table(df$degree,df$group)
                   
                    1 2 3
  Mild severity     3 3 2
  Moderate severity 0 0 1
  Severe severity   0 0 1
但我需要在该模板中格式化结果: [![在此处输入图像描述][1][1]

如何创建具有此结构的表

非常重要的编辑 完整dput()(42 obs.)

有一个概念的主题,有一个概念的一些副作用。 一个人可能有几个副作用。 副作用可能是

severity
Moderate
Severe
我得数一数,有多少人被分组,有这样或那样的副作用, 这个组有多少副作用

即,在第一组中,我们有9个观察结果,但有两个独特的人

01-06-104
01-09-108
但总计数
轻度
为7。 因此,只有两个人有轻度副作用,总计数为7(Y)。 患者总数是42,所以要计算百分比,我们必须除以42(2/42)=4,7

这就是为什么我希望输出为:

    degree       group1           group2         group3 
                  X (%)Y          X (%)Y         X (%) Y
                        
    Mild severity   2 (4,7%)7   3 (7,1%)13   3(7,1%)    12
    Moderato        1 (2,3%)1   0(0,0%%)0    2(4,7%)    6
    Severe severity 0(0,0%%)0   0(0,0%%)0     1(2,3)    1

你想要分数和总数吗?尝试:

n=表(df$度,df$组)
df=原始数据帧(cbind(n/colSums(n)*100,n))

你想要分数和总数吗?尝试:

n=表(df$度,df$组)
df=原始数据帧(cbind(n/colSums(n)*100,n))

我必须承认我不清楚你想做什么。不幸的是,您预期的输出图像没有帮助

我假设您正在询问如何计算双向列联表,并显示计数和百分比(总数)。这里有一种可能性

library(tidyverse)
df %>%
    group_by(group, degree) %>%
    summarise(n = n(), perc = n() / nrow(.)) %>%
    mutate(entry = sprintf("%i (%3.2f%%)", n, perc * 100)) %>%
    select(-n, -perc) %>%
    spread(group, entry, fill = "0 (0.0%%)")
## A tibble: 3 x 4
#  degree            `1`        `2`        `3`
#  <fct>             <chr>      <chr>      <chr>
#1 Mild severity     3 (30.00%) 3 (30.00%) 2 (20.00%)
#2 Moderate severity 0 (0.0%%)  0 (0.0%%)  1 (10.00%)
#3 Severe severity   0 (0.0%%)  0 (0.0%%)  1 (10.00%)
库(tidyverse)
df%>%
组别(组别、学位)%>%
总结(n=n(),perc=n()/nrow(.))%>%
突变(条目=sprintf(“%i(%3.2f%%)”,n,perc*100))%>%
选择(-n,-perc)%>%
价差(组、分录、填充=“0(0.0%%”))
##一个tibble:3x4
#学位'1``2``3`
#                           
#1轻度3(30.00%)3(30.00%)2(20.00%)
#2中度0(0.0%%)0(0.0%%)1(10.00%)
#3严重程度0(0.0%%)0(0.0%%)1(10.00%)

我必须承认我不清楚你想做什么。不幸的是,您预期的输出图像没有帮助

我假设您正在询问如何计算双向列联表,并显示计数和百分比(总数)。这里有一种可能性

library(tidyverse)
df %>%
    group_by(group, degree) %>%
    summarise(n = n(), perc = n() / nrow(.)) %>%
    mutate(entry = sprintf("%i (%3.2f%%)", n, perc * 100)) %>%
    select(-n, -perc) %>%
    spread(group, entry, fill = "0 (0.0%%)")
## A tibble: 3 x 4
#  degree            `1`        `2`        `3`
#  <fct>             <chr>      <chr>      <chr>
#1 Mild severity     3 (30.00%) 3 (30.00%) 2 (20.00%)
#2 Moderate severity 0 (0.0%%)  0 (0.0%%)  1 (10.00%)
#3 Severe severity   0 (0.0%%)  0 (0.0%%)  1 (10.00%)
库(tidyverse)
df%>%
组别(组别、学位)%>%
总结(n=n(),perc=n()/nrow(.))%>%
突变(条目=sprintf(“%i(%3.2f%%)”,n,perc*100))%>%
选择(-n,-perc)%>%
价差(组、分录、填充=“0(0.0%%”))
##一个tibble:3x4
#学位'1``2``3`
#                           
#1轻度3(30.00%)3(30.00%)2(20.00%)
#2中度0(0.0%%)0(0.0%%)1(10.00%)
#3严重程度0(0.0%%)0(0.0%%)1(10.00%)
使用基本R:

a = transform(data.frame(table(df)),Freq = sprintf("%d (%3.2f%%)",Freq,prop.table(Freq)*100))
data.frame(t(unstack(a,Freq~degree)))
                          X1         X2         X3
Mild.severity     3 (30.00%) 3 (30.00%) 2 (20.00%)
Moderate.severity  0 (0.00%)  0 (0.00%) 1 (10.00%)
Severe.severity    0 (0.00%)  0 (0.00%) 1 (10.00%)
使用基本R:

a = transform(data.frame(table(df)),Freq = sprintf("%d (%3.2f%%)",Freq,prop.table(Freq)*100))
data.frame(t(unstack(a,Freq~degree)))
                          X1         X2         X3
Mild.severity     3 (30.00%) 3 (30.00%) 2 (20.00%)
Moderate.severity  0 (0.00%)  0 (0.00%) 1 (10.00%)
Severe.severity    0 (0.00%)  0 (0.00%) 1 (10.00%)

这有点错误,我需要按照表格模板填写。请提供您的输出。这与表格不同这有点错误,我需要按照表格模板填写。请提供您的输出。它和桌子不一样我不知道你在找什么。您是否在询问如何生成频率(而不是计数)表?或者如何使用计数和频率布局表格?或者如何在Excel中存储表的输出?我不明白
X
Y
列应该表示什么。你能根据样本数据(不是图像而是真实数据)添加你的预期输出吗?@MauritsEvers我编辑了这篇文章,请检查一下,你的答案是正确的,但需要添加。编辑的dput不足以提供你想要的结果want@Onyambu,我用更多obs更新了dput。编辑的
dput
仍然没有帮助。所有的
Study.Subject.ID
s都不同,所以我不明白你所说的“不是三个人,而是一个人有三个副作用”是什么意思。您需要后退一步,拿出一个具有代表性的最小样本数据集,并根据样本数据清楚地显示您的预期输出。您的预期输出应该包含实际数字的完整表格,而不仅仅是(部分)屏幕截图。只有到那时才有可能提供帮助。我不知道你在找什么。您是否在询问如何生成频率(而不是计数)表?或者如何使用计数和频率布局表格?或者如何在Excel中存储表的输出?我不明白
X
Y
列应该表示什么。你能根据样本数据(不是图像而是真实数据)添加你的预期输出吗?@MauritsEvers我编辑了这篇文章,请检查一下,你的答案是正确的,但需要添加。编辑的dput不足以提供你想要的结果want@Onyambu,我用更多obs更新了dput。编辑的
dput
仍然没有帮助。所有的
Study.Subject.ID
s都不同,所以我不明白你所说的“不是三个人,而是一个人有三个副作用”是什么意思。您需要后退一步,拿出一个具有代表性的最小样本数据集,并根据样本数据清楚地显示您的预期输出。您的预期输出应该包含实际数字的完整表格,而不仅仅是(部分)屏幕截图。只有到那时才能提供帮助。是的,很好,你完全理解我想要什么,但是你能添加新的专栏吗。我编辑了这篇文章,请检查编辑是的,很好,你完全理解我想要什么,但是你能添加新的专栏吗。我编辑了文章,请检查编辑