在R语言中如何保留两位小数?使用round()函数报错求助
解决R语言中保留两位小数的报错问题
你遇到的报错大概率是因为round()的使用位置错误,或是直接对分组后的tibble对象进行整体round操作导致的。下面针对你的每段代码给出修改方案,确保结果保留两位小数:
针对Q1的修改
在summarize步骤直接对均值结果应用round():
Q1 <- flights %>% group_by(carrier) %>% summarize(mean_distance = round(mean(distance), 2)) %>% # 直接计算并保留两位小数 filter(carrier %in% c("AA", "EV", "FL"))
如果已经生成了原始Q1对象,也可以事后修改数值列:
Q1 <- Q1 %>% mutate(across(is.numeric, ~round(., 2))) %>% as.data.frame()
针对Q4的修改
对summarise中的两个统计量都应用round():
Q4 <- msleep %>% select(conservation, sleep_total) %>% na.omit() %>% group_by(conservation) %>% summarise( mean_sleep = round(mean(sleep_total, na.rm = TRUE), 2), var_sleep = round(var(sleep_total, na.rm = TRUE), 2) )
针对Q2的修改
Q2 <- fastfood %>% group_by(restaurant = "Subway") %>% summarize(mean_sugar = round(mean(sugar), 2)) # 给结果列命名并保留两位小数
针对Q3的修改
Q3 <- fastfood %>% group_by(restaurant="Taco Bell") %>% summarize(mean_calories = round(mean(calories), 2))
通用解决方案
如果需要对已有的数据框(或分组后的tibble)批量处理所有数值列,保留两位小数,可以用dplyr的across()函数:
# 示例:处理Q4对象 Q4 <- Q4 %>% mutate(across(is.numeric, ~round(., 2))) %>% as.data.frame() # 转成data.frame格式
常见报错的原因:
- 直接对整个分组
tibble调用round(),而没有指定要处理的列 - 转成data.frame的时机不对,应该先完成round操作再转换
内容的提问来源于stack exchange,提问作者Destiny33
相关产品推荐
相关产品推荐

