- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 dplyr %>%
管道将数值四舍五入并格式化为小数点后有 2 位数字(例如 2.43、1.05)。但是,format()
函数在以下两个数据示例(df_summarize
和 df_groupby
)中具有不同的行为。 df_summarize
的输出是正确的,但是 df_groupby
的输出不正确,我想知道有线行为的原因是什么。是因为分组效应还是其他原因?
如有任何建议,我们将不胜感激。
library(tidyverse)
df <- data.frame(cate = sample(c("A", "B"), size = 5, replace = T),
v1 = runif(5, 1.001, 5.005),
v2 = runif(5, 1.001, 5.005))
df_summarize <- df %>% summarise(mean_v1 = mean(v1),
mean_v2 = mean(v2)) %>%
round(2) %>% format(nsmall = 2)
# mean_v1 mean_v2
# 1 3.94 2.08
df_groupby <- df %>% group_by(cate) %>%
summarise(p1 = mean(v1), p2 = mean(v2)) %>%
select(-cate) %>% ungroup() %>%
round(2) %>% format(nsmall = 2)
# [1] "\033[38;5;246m# A tibble: 2 × 2\033[39m"
# [2] " p1 p2"
# [3] " \033[3m\033[38;5;246m<dbl>\033[39m\033[23m \033[3m\033[38;5;246m<dbl>\033[39m\033[23m"
# [4] "\033[38;5;250m1\033[39m 4.01 2.17"
# [5] "\033[38;5;250m2\033[39m 3.67 1.69"
最佳答案
原因是 format
有一个 data.frame
方法,它不同于 format.tbl
方法(调用 pillar::format_tbl
其中提到 'x' 作为 要格式化或打印的对象。
)对于 format
和 tibble
。在第一种情况下,当没有group_by
时,它不会将数据更改为tibble
,而使用group_by
时,它会更改为tibble
这会导致问题
library(dplyr)
df %>%
group_by(cate) %>%
summarise(p1 = mean(v1), p2 = mean(v2)) %>%
select(-cate) %>%
round(2) %>%
as.data.frame %>% # add the `as.data.frame`
format(nsmall = 2)
-输出
p1 p2
1 3.02 2.86
2 3.20 3.74
在第一种情况下,检查str
> df %>%
summarise(mean_v1 = mean(v1),
mean_v2 = mean(v2)) %>%
round(2)%>%
str
'data.frame': 1 obs. of 2 variables:
$ mean_v1: num 3.09
$ mean_v2: num 3.21
而使用 group_by
> df %>%
group_by(cate) %>%
summarise(p1 = mean(v1), p2 = mean(v2)) %>%
select(-cate) %>%
round(2) %>%
str
tibble [2 × 2] (S3: tbl_df/tbl/data.frame)
$ p1: num [1:2] 3.02 3.2
$ p2: num [1:2] 2.86 3.74
在?group_by
的文档中也有提到
A grouped data frame with class grouped_df, unless the combination of ... and add yields a empty set of grouping columns, in which case a tibble will be returned.
如果我们想在 tibble
上使用 format
,请尝试使用 across
df %>%
group_by(cate) %>%
summarise(p1 = mean(v1), p2 = mean(v2)) %>%
select(-cate) %>%
round(2) %>%
mutate(across(everything(), format, nsmall = 2))
-输出
# A tibble: 2 × 2
p1 p2
<chr> <chr>
1 3.02 2.86
2 3.20 3.74
关于r - 为什么在 R 中使用 `format()` 和 `dplyr` 会出现奇怪的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69956541/
我在运行 GNU Visual Debugger 1.2.6 的 XP 虚拟机上尝试打开 Ada 文件 (.adb),但不断出现以下错误: not in executable format: File
我正在尝试获取 io:format/1 的输出结果。 我知道io_lib中也有类似的函数,io_lib:format/2,但是输出不一样。事实上,它根本没有做任何事情。 如果我尝试绑定(bind) i
我在 documentation 中找不到任何内容, 甚至 BreakBeforeBraces: Allman格式化我已经拆分的单行函数 void foo() { bar(); } 我想要类似的东西
请考虑函数f: open Format let rec f i = match i with | x when x () | i -> pp_open_hovbox std_form
如何在列表中的每三个参数后添加一个回车符(使用 ~%)? 例如,我现在: (format nil "~{~a ~}" (list '"one" '"two" '"three" '"four" '"fi
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 6 年前。 Improve
当我尝试在 Ubuntu 上编译 fprintf(stderr,Usage) 时,我遇到了这个错误: error: format not a string literal and no format
运行 cv2.getRectSubPix(img, (5,5), (0,0)) 抛出错误: OpenCV Error: Unsupported format or combination of for
我正在 cocos2d-x-2.1.4 上开发游戏,但是,当我尝试在 Android 上构建它时,它失败并出现错误:格式不是字符串文字且没有格式参数 [-Werror=format-安全] 在文件 C
运行时: $ clang-format -style=Google -dump-config > .clang-format 文件后附有省略号 (...)。 TabWidth: 8 Us
我想在纯函数中将 double 型转换为字符串。我很困惑为什么这不是纯粹的: wstring fromNumber(double n) pure { import std.format;
Common Lisp 的 format 是否有一个特别容易阅读的实现? 我找到了 SBCL's version ,但由于 SBCL 以 性能 Common Lisp 实现而著称,我想知道是否有一个更
嗨,我正在尝试在 JSP 页面上格式化字符串,它给了我错误,正如我在标题中提到的,我的代码是, String header=""; header = 12-29-2011 15;
clang-format 将我的行拆分为 80 列。有没有办法让停止断线? documentation似乎没有解决这个问题。 最佳答案 负责它的配置选项称为 ColumnLimit .您可以通过将其设
我有一个Angular 11项目,试图集成SpreadJS Designer,但在ngcc步骤Compiling @grapecity/spread-sheets-designer-angular :
我正在使用 clang-format 4.0.0来对齐我的个人项目。 我将以下配置用于 clang-format 。 Language: Cpp BreakBeforeBraces: A
我正在使用- char str[200]; ... sprintf(str,"%s", val) msg(str); sprintf(str, "%s: %s",timestr,"\n recv -"
我有这个 double 值: var value = 52.30298270000003 当我将它转换为 string 时,它失去了它的精度: var str = string.Format("{0}
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 8 年前。 Improve
如何使用 clang-format 始终将冒号左对齐。我不希望它被禁用:1234,但禁用:1234。 #pragma warning(disable: 1234) 最佳答案 我猜你需要这个。 Spac
我是一名优秀的程序员,十分优秀!