使用 summarytools freq 包添加变量标签
Add variable labels using the summarytools freq package
我想将 变量标签 添加到我生成的频率表中。但是,我在 summarytools documentation.
中找不到该功能
这是我的代码:
数据
library(magrittr)
library(dplyr)
library(gtsummary)
library(summarytools)
require(pander)
library(knitr)
library(stringr)
data_in_na <- readr::read_table2('q1 q2
No somelongresponsethattakesupmorethanonline--somelongresponsethattakesupmorethanonline
No somelongresponsethattakesupmorethanonline--somelongresponsethattakesupmorethanonline
No somelongresponsethattakesupmorethanonline--somelongresponsethattakesupmorethanonline
No somelongresponsethattakesupmorethanonline--somelongresponsethattakesupmorethanonline
No Yes
No Always
Yes No
Yes No
Yes No
NA NA
NA NA
NA NA
NA NA
')
vct <- data_in_na %>% names(.)
创建频率的函数
create_freq <- function(v1) {
#names <- c("var name 1", "var name 2")
freq(v1,
cumul = FALSE,
totals = TRUE,
display.type = FALSE,
variable.label = v1,
missing ='missing',
report.nas = TRUE)
}
通过所有变量循环到 运行
for (i in vct) {
tbl <- create_freq(data_in_na[i]) # build gtsummary table
print(tbl) # print table
cat('\n\n----------------------------------------------------------\n\n')
# d <- table(data_in[i])
# print(kable(d))
}
我想要的
有什么建议吗??
这会添加一个关于字段名称的“可变”标签并删除双主题标签。我还将 940 像素的标准最大宽度调整为 1000 像素——但是,如果实际的长名称比您的示例数据长很多,这将无济于事。我提供了注释(//
在 JS 中的内联注释之前),以便您可以看到 Javascript 的每个区域在做什么。您无需为 Javascript 做任何特殊操作(它内置于 R Markdown 中)。
按原样使用您的代码,将以下内容作为块添加到之后您的代码。
如果您尝试 运行 此块内联,它不会产生输出。但是,您会在渲染时看到输出。
对于添加到问题标签的问题,我对其进行了编辑以提供两种不同的方法来执行此操作。一个用R,一个用JS。
我建议使用 R,因为它是原生的。但是您可能有自己不这样做的原因。这违反了良好的命名习惯,但它可以仅用于这些表(如果需要)。
R 版本是选项 1。此代码介于数据收集和将变量名称存储在 vct
之间。 (实际上,我在这段代码中添加了 vct
。)
```{r optQuestions, include = F,eval=F}
# not sure how you have the questions stored
# let's say you have the questions stored in a vector
questions = c("How often do you exercies?", "Do you like apples?")
qLabs = names(data_in_na)
names(data_in_na) <- paste(qLabs, questions)
vct <- data_in_na %>% names(.)
```
现在对于 JS - 2 行等同于执行 paste
在 R 块中执行的操作。使用一个或另一个,您将看不到此数据的具体差异。虽然,如果有很多问题,您可能会发现 R 方法更可取。
```{r styler,results='asis',engine='js'}
// search for class and tags
elem = document.querySelector('div.hereForMod > pre > code');
// remove hashtags
elem.innerHTML = elem.innerHTML.replace(/#{2}/g, '');
// I missed what you wanted for the questions --
// this is option TWO: // add // if you want to ignore them (or delete)
elem.innerHTML = elem.innerHTML.replace(/q1/g, 'q1 How often do you exercise?')
elem.innerHTML = elem.innerHTML.replace(/q2/g, 'q2 Do you like apples?')
// change max width
newMax = "max-width:1000px;"; //currently 940
elem2 = document.querySelector('.main-container'); // find what to change
styler = elem2.getAttribute("style"); // get current inline styles
if(styler==undefined || styler==null){
styler="";
}
elem2.setAttribute("style", styler+newMax); // set new style settings
```
如果将 eval=FALSE
添加到块中,您可以在不使用它时看到它发生了什么变化。
如果您想要 Variables
以外的词,则必须调整 Freq
旁边的值。 (目前,该值为 12。)您还需要确保在该词和 Freq
.
之间保持相同数量的空格
如果您有任何问题,请告诉我。
编辑前:
编辑后:
我想将 变量标签 添加到我生成的频率表中。但是,我在 summarytools documentation.
中找不到该功能这是我的代码:
数据
library(magrittr)
library(dplyr)
library(gtsummary)
library(summarytools)
require(pander)
library(knitr)
library(stringr)
data_in_na <- readr::read_table2('q1 q2
No somelongresponsethattakesupmorethanonline--somelongresponsethattakesupmorethanonline
No somelongresponsethattakesupmorethanonline--somelongresponsethattakesupmorethanonline
No somelongresponsethattakesupmorethanonline--somelongresponsethattakesupmorethanonline
No somelongresponsethattakesupmorethanonline--somelongresponsethattakesupmorethanonline
No Yes
No Always
Yes No
Yes No
Yes No
NA NA
NA NA
NA NA
NA NA
')
vct <- data_in_na %>% names(.)
创建频率的函数
create_freq <- function(v1) {
#names <- c("var name 1", "var name 2")
freq(v1,
cumul = FALSE,
totals = TRUE,
display.type = FALSE,
variable.label = v1,
missing ='missing',
report.nas = TRUE)
}
通过所有变量循环到 运行
for (i in vct) {
tbl <- create_freq(data_in_na[i]) # build gtsummary table
print(tbl) # print table
cat('\n\n----------------------------------------------------------\n\n')
# d <- table(data_in[i])
# print(kable(d))
}
我想要的
有什么建议吗??
这会添加一个关于字段名称的“可变”标签并删除双主题标签。我还将 940 像素的标准最大宽度调整为 1000 像素——但是,如果实际的长名称比您的示例数据长很多,这将无济于事。我提供了注释(//
在 JS 中的内联注释之前),以便您可以看到 Javascript 的每个区域在做什么。您无需为 Javascript 做任何特殊操作(它内置于 R Markdown 中)。
按原样使用您的代码,将以下内容作为块添加到之后您的代码。
如果您尝试 运行 此块内联,它不会产生输出。但是,您会在渲染时看到输出。
对于添加到问题标签的问题,我对其进行了编辑以提供两种不同的方法来执行此操作。一个用R,一个用JS。
我建议使用 R,因为它是原生的。但是您可能有自己不这样做的原因。这违反了良好的命名习惯,但它可以仅用于这些表(如果需要)。
R 版本是选项 1。此代码介于数据收集和将变量名称存储在 vct
之间。 (实际上,我在这段代码中添加了 vct
。)
```{r optQuestions, include = F,eval=F}
# not sure how you have the questions stored
# let's say you have the questions stored in a vector
questions = c("How often do you exercies?", "Do you like apples?")
qLabs = names(data_in_na)
names(data_in_na) <- paste(qLabs, questions)
vct <- data_in_na %>% names(.)
```
现在对于 JS - 2 行等同于执行 paste
在 R 块中执行的操作。使用一个或另一个,您将看不到此数据的具体差异。虽然,如果有很多问题,您可能会发现 R 方法更可取。
```{r styler,results='asis',engine='js'}
// search for class and tags
elem = document.querySelector('div.hereForMod > pre > code');
// remove hashtags
elem.innerHTML = elem.innerHTML.replace(/#{2}/g, '');
// I missed what you wanted for the questions --
// this is option TWO: // add // if you want to ignore them (or delete)
elem.innerHTML = elem.innerHTML.replace(/q1/g, 'q1 How often do you exercise?')
elem.innerHTML = elem.innerHTML.replace(/q2/g, 'q2 Do you like apples?')
// change max width
newMax = "max-width:1000px;"; //currently 940
elem2 = document.querySelector('.main-container'); // find what to change
styler = elem2.getAttribute("style"); // get current inline styles
if(styler==undefined || styler==null){
styler="";
}
elem2.setAttribute("style", styler+newMax); // set new style settings
```
如果将 eval=FALSE
添加到块中,您可以在不使用它时看到它发生了什么变化。
如果您想要 Variables
以外的词,则必须调整 Freq
旁边的值。 (目前,该值为 12。)您还需要确保在该词和 Freq
.
如果您有任何问题,请告诉我。
编辑前:
编辑后: