Вот обратный путь:
library(writexl)
library(tidyverse)
data <- tribble(
~Name, ~ICCvalue, ~`Lower bound`, ~Upperbound,
"a", 0.90, 0.46, 0.98
)
(new_data <- data %>% transmute(
Name,
`ICCvalue (Lowerbound-Upperbound)` =
str_glue_data(., "{ICCvalue} ({`Lower bound`} - {Upperbound})")
))
#> # A tibble: 1 x 2
#> Name `ICCvalue (Lowerbound-Upperbound)`
#> <chr> <glue>
#> 1 a 0.9 (0.46 - 0.98)
write_xlsx(new_data, "result.xlsx")
"{ICCvalue} ({`Lower bound`} - {Upperbound})"
является наиболее кратким выражением того, что вы хотите, чтобы значения были, верно? Функции glue
используют такие выражения со значениями в квадратных скобках, на которые следует ссылаться по имени и вставлять. Единственная сложность здесь заключается в том, что объекты-значения, на которые ссылаются, являются векторами значений - целыми столбцами - поэтому вы должны использовать str_glue_data()
, причем первый аргумент - это список, окружение и т. Д., Внутри которых находятся упомянутые векторы. .
здесь на самом деле data
, поскольку это объект, передаваемый на весь вызов transmute()
.
transmute()
, как вы можете видеть, просто делает новую таблицу из data
только с колонками, которые я назвал или определил. А именно, при этом удаляются исходные столбцы, в которых мы больше не нуждаемся.
Также включен код для вывода результата в Excel.
Другим удобным способом было бы использовать tidyr::unite()
, но вы бынужно использовать его отдельно пару раз, с разными разделителями, а затем в любом случае отдельно добавить правую скобку, так что ...
Создано в 2019-10-23 пакетом prex (v0.3.0)