我已经为某些变量计算了类内相关性。我想在表格中显示三个重要值:
我现在在R中创建了一个表格,其中4列彼此相邻
Name ICCvalue Lower bound Upperbound
a 0.90 0.46 0.98
但是,对于我的科学论文,我想使用以下表示法
Name ICCvalue (Lowerbound-Upperbound)
a 0.90 (0.46 - 0.98)
是否可以通过这种方式将数据从R导出到excel?否则,我必须复制粘贴所有值才能获得此结果。
在R中:
df[, "(Lowerbound - Upperbound)"] = sprintf("(%s - %s)", df[, "Lower bound"], df[, "Upperbound"])
我也鼓励您在是否使用“下限”中保持一致。我在您的问题中复制了列名,其中一个具有空格,而一个没有。
一个选项:
within(df, `(Lowerbound-Upperbound)` <- paste("(", Lower bound , "-", Upperbound, ")", sep=''))
# Name ICCvalue Lowerbound Upperbound (Lowerbound-Upperbound)
# 1 a 0.9 0.46 0.98 (0.46-0.98)
这里是整理方式:
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()
,但是您需要使用不同的分隔符分别使用几次,然后无论如何都要分别添加正确的括号,因此...
由reprex package(v0.3.0)在2019-10-23创建