在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都不同,所以我不明白你所说的“不是三个人,而是一个人有三个副作用”是什么意思。您需要后退一步,拿出一个具有代表性的最小样本数据集,并根据样本数据清楚地显示您的预期输出。您的预期输出应该包含实际数字的完整表格,而不仅仅是(部分)屏幕截图。只有到那时才能提供帮助。是的,很好,你完全理解我想要什么,但是你能添加新的专栏吗。我编辑了这篇文章,请检查编辑是的,很好,你完全理解我想要什么,但是你能添加新的专栏吗。我编辑了文章,请检查编辑