【发布时间】:2018-12-11 19:07:41
【问题描述】:
我想在一个数据框中合并两列和两列的数字(列中的值是统计分析中置信区间的上限和下限)。
我的首选方法是使用tidyr 和unite 函数。但是以 0.20 为例,该数字将被修改为 0.2,即如果数字中的最后一个小数等于 0,则将它们删除。使用unite时有什么办法可以保持原来的格式吗?
unite 在这里描述:https://www.rdocumentation.org/packages/tidyr/versions/0.8.2/topics/unite
例子:
# Dataframe
df <- structure(list(est = c(0.05, -0.16, -0.02, 0, -0.11, 0.15, -0.26,
-0.23), low2.5 = c(0.01, -0.2, -0.05, -0.03, -0.2, 0.1, -0.3,
-0.28), up2.5 = c(0.09, -0.12, 0, 0.04, -0.01, 0.2, -0.22, -0.17
)), row.names = c(NA, 8L), class = "data.frame")
使用逗号作为分隔符将列与unite 组合(合并)以获得置信度
library(tidyr)
df <- unite(df, "CI", c("low2.5", "up2.5"), sep = ", ", remove=T)
给了
df
est CI
1 0.05 0.01, 0.09
2 -0.16 -0.2, -0.12
3 -0.02 -0.05, 0
4 0.00 -0.03, 0.04
5 -0.11 -0.2, -0.01
6 0.15 0.1, 0.2
7 -0.26 -0.3, -0.22
8 -0.23 -0.28, -0.17
我想要这个:
est CI
1 0.05 0.01, 0.09
2 -0.16 -0.20, -0.12
3 -0.02 -0.05, 0.00
4 0.00 -0.03, 0.04
5 -0.11 -0.20, -0.01
6 0.15 0.10, 0.20
7 -0.26 -0.30, -0.22
8 -0.23 -0.28, -0.17
我相信使用 Base R 执行此操作会很复杂(必须移动/重新排列许多组合列并删除旧列)。有什么办法可以避免unite 去掉零值的小数?
【问题讨论】:
-
format或sprintf在你之前unite?