Как добавить единицы измерения в таблицу в R

#r #r-table

Вопрос:

У меня есть следующий код для создания таблицы R . Как я могу добавить единицу измерения в Height и Weight и BMI ? (так что это было бы похоже Height (in) на и Weight (lb) и BMI (kg/m2) )

 Height <- c(66, 73, 65, 68, 71)
Weight <- c(121,191,177,159,152) 
#pound to kilogram and inche to meter
#BMI=kg/m^2
BMI = Weight * 0.45/(Height * 0.02)^2  
expn <- data.frame (Height, Weight, BMI)
knitr::kable (expn, caption = "Body Measurments", align = c ("c", "c"))
 

Ответ №1:

Если вы имеете в виду добавление единиц измерения к элементам в таблице,

 expn <- data.frame (Height, Weight, BMI) %>%
  mutate(Height = paste(Height, "in"),
           Weight = paste(Weight, "lb"),
           BMI = paste(BMI, "kg/m2"))
knitr::kable (expn, caption = "Body Measurments", align = c ("c", "c"))

Table: Body Measurments

| Height | Weight |          BMI           |
|:------:|:------:|:----------------------:|
| 66 in  | 121 lb |      31.25 kg/m2       |
| 73 in  | 191 lb | 40.3218239819854 kg/m2 |
| 65 in  | 177 lb | 47.1301775147929 kg/m2 |
| 68 in  | 159 lb | 38.6840397923875 kg/m2 |
| 71 in  | 152 lb | 33.9218409045824 kg/m2 |
 

В tibble ,

 units <- c("in", "lb", "kg/m2")
expn <- data.frame (Height, Weight, BMI)%>% map2_dfc(units, ~set_units(.x, .y, mode = "standard")) 
expn

  Height Weight      BMI
    [in]   [lb]  [kg/m2]
1     66    121 31.25000
2     73    191 40.32182
3     65    177 47.13018
4     68    159 38.68404
5     71    152 33.92184
 

С помощью kableExtra ,

 expn <- data.frame (Height, Weight, BMI)
colNames <- names(expn)
units <- c("$lb$", "$in$", "$kg/m2$")
knitr::kable (expn, caption = "Body Measurments", align = c ("c", "c"), col.names = units, escape = F) %>%
  kableExtra::add_header_above(header = colNames, line = F, align = "c")
 

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

1. Спасибо. Можно ли добавить единицу измерения только в заголовки, а не в каждую отдельную ячейку?

2. @TinaJ В tibble формате, я могу , но после knitr::kable , единицы измерения идут рядом со значениями.

3. Первый из них выдает ошибку: Error in data.frame(Height, Weight, BMI) %>% mutate(Height = paste(Height, : could not find function "%>%" Execution halted

4. @TinaJ О…Мне действительно жаль. Вам может понадобиться library(dplyr) и library(units) мой код.

5. @TinaJ Там тоже использовался метод kableExtra . Я добавляю этот код выше.

Ответ №2:

Если все, что вы хотите сделать, это добавить единицы измерения в имена столбцов, которые вы могли бы использовать colnames , и paste0 .

 Height <- c(66, 73, 65, 68, 71)
Weight <- c(121,191,177,159,152) 
#pound to kilogram and inche to meter
#BMI=kg/m^2
BMI = Weight * 0.45/(Height * 0.02)^2  
expn <- data.frame (Height, Weight, BMI)
colnames(expn)<-paste0(colnames(expn), c(" (in)", " (lb)", " (kg/m2)"))
knitr::kable (expn, caption = "Body Measurements", align = c ("c", "c"))

 

Таблица: Размеры тела

Высота (дюйм) Вес (фунт) ИМТ (кг/м2)
66 121 31.25000
73 191 40.32182
65 177 47.13018
68 159 38.68404
71 152 33.92184

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

1. Нужны ли для этого дополнительные библиотеки?

2. Нет, для этого не нужны дополнительные библиотеки.