首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >提德::单位滴小数点0

提德::单位滴小数点0
EN

Stack Overflow用户
提问于 2018-12-11 19:07:41
回答 1查看 217关注 0票数 1

我希望将数据框架中两列和两列的数字组合在一起(列中的值是统计分析中置信区间的上、下值)。

我的推断方法是使用tidyrunite函数。但以0.20为例,这个数字将被修改为0.2,也就是说,如果最后的小数等于零,这些小数就会被删除。在使用unite时,有没有办法保持原始格式?

这里描述的是unitehttps://www.rdocumentation.org/packages/tidyr/versions/0.8.2/topics/unite

示例:

代码语言:javascript
运行
复制
# 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合并以获得信任

代码语言:javascript
运行
复制
library(tidyr)
df <- unite(df, "CI", c("low2.5", "up2.5"), sep = ", ", remove=T)

给出

代码语言:javascript
运行
复制
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

我想要这个:

代码语言:javascript
运行
复制
    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来完成这个任务会很复杂(必须移动/重新排列多个组合列并删除旧列)。有什么方法可以避免unite降低零值的小数呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-11 19:19:19

这样做是可行的:

代码语言:javascript
运行
复制
library(tidyverse)

df %>% 
  mutate_if(is.numeric, ~format(., nsmall = 2)) %>% 
  unite("CI", c("low2.5", "up2.5"), sep = ", ", remove=T)
#    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
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53730803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档