Создание столбца метки для символьных переменных

#r #dataframe #label #summary

Вопрос:

Предположим, у меня есть этот пример набора данных только с символьными переменными.

 dxe1<-c("W07XXXA", "NULL", "3")
dxe1_poa<-c("Y","NULL","N")
dxe2<-c("NULL","NULL","NULL")
dxe2_poa<-c("NULL","NULL","NULL")
df3 <- data.frame(dxe1,dxe1_poa, dxe2,dxe2_poa)
 

Я хочу пометить переменные, и поэтому я создал вектор меток для них:

 var.labels = c(dxe1="External Cause of Injury Diagnosis 1",
               dxe1_poa="External Cause of Injury Diagnosis 1 - Present on Admission", dxe2="External Cause of Injury Diagnosis 2", dxe2_poa="External Cause of Injury Diagnosis 2 - Present on Admission")

label(df3) = as.list(var.labels[match(names(df3), names(var.labels))])

label(df3)
 

Моя цель состоит в том, чтобы создать таблицу, аналогичную приведенной ниже, то есть я хочу иметь столбец метки, который содержит описание переменной. Я хочу, чтобы отсутствующие наблюдения отображались только в виде статистики, а не в виде min, max, mean, sd. Они должны быть просто n.a., как в таблице ниже.

введите описание изображения здесь

Я пытаюсь использовать следующий набор кодов:

 df3 <- Filter(is.character, df3)
Variables <- names(df3)
Label <- label(df3)
Missing <- sapply(df3, function(x) sum(is.na(x)))
Type <- sapply(df3, function(x) {tmp <- class(x);if(length(x) > 1) tmp[2] else tmp[1]})
Min <- sapply(df3, function(x) min(x, na.rm = TRUE))
Max <- sapply(df3, function(x) max(x, na.rm = TRUE))
SD <- sapply(df3, function(x) format(round(sd(x, na.rm=TRUE), 2), nsmall = 2))
Mean <- sapply(df3, function(x) format(round(mean(x, na.rm=TRUE), 2), nsmall = 2))
#To get the Latex table for the rows 
knitr::kable(data.frame(Variables, Label, Missing, Type, Min, Max, Mean, SD, row.names = NULL), "latex")
 

Однако при использовании вышеуказанного набора кодов статистика среднего значения и SD по-прежнему отображается. Я хочу, чтобы они отображались как «n.a», как в таблице выше. Есть какие-нибудь предложения? Кроме того, у меня есть минимум и максимум, отображаемые в форме персонажа. Я просто хочу, чтобы появились формы с номерами.

Комментарии:

1. Как вы будете показывать min и max символьные переменные? Что вы имеете в виду под I just want the number forms to appear.

2. @RonakShah Привет, да. Показывать минимальное и максимальное количество символьных переменных не имеет особого смысла. Я не уверен, почему вышеприведенная таблица так себя ведет. Но я хочу показать отсутствующие значения, метку и тип. В остальном он может отображаться как «n.a.» в выходной таблице Latex. Прямо сейчас мои вместо этого выглядят как NA.

Ответ №1:

Вы можете попробовать это :

 df3 <- Filter(is.character, df3)
Variables <- names(df3)
Label <- label(df3)
Missing <- sapply(df3, function(x) sum(is.na(x)))
Type <- sapply(df3, function(x) {tmp <- class(x);if(length(x) > 1) tmp[2] else tmp[1]})
Min <- 'n.a'
Max <- 'n.a'
SD <- 'n.a'
Mean <- 'n.a'
#To get the Latex table for the rows 
knitr::kable(data.frame(Variables, Label, Missing, Type, Min, Max, Mean, SD, row.names = NULL), "latex")