【问题标题】:Add a comma after two digits in R?在R中的两位数后添加逗号?
【发布时间】:2021-11-12 19:58:08
【问题描述】:

我想在所有列的数字之间添加一个逗号。

我的数据是一个百分比,但它是这样传递的:

Percentage

3456
4444
325

预期值:

Percentage

34,56
44,44
32,5


当我使用 gsub o sub 时,我无法将我的列保存为数字。我是否使用“。”并不重要。或 "," 结果是字符。

谢谢!

【问题讨论】:

  • paste(substr(Percentage, 1, 2), substr(Pecrentage, 3, 5), sep = ",") ?
  • "can't save my column as numeric" --- 每当你尝试将字符串添加到数字时,整体都会变成一个字符串。你想做什么,将这些转换为,-based-locale 十进制数?
  • @AllanCameron 可行,但列变为
  • @r2evans 我正在尝试制作一位或两位数的数字,其他的是小数。
  • 克拉拉,我想你没抓住我的意思。第一:使用gsubpaste 或类似的string 函数将始终将数字转换为字符串、句点。其次,您是否使用逗号分隔整数(左侧)和小数(右侧)的语言环境?如果您的语言环境是基于逗号的,那么为什么您的号码首先被错误地读取?如果您的 R 已经设置为基于逗号,您可以使用x / ifelse(x < 1000, 10, 100)吗?

标签: r gsub comma


【解决方案1】:

我们可以使用formattable 中的comma,这将修改format,同时保持numeric 原样

df1$Percentage <- formattable::comma(df1$Percentage, big.interval = 2, digits = 0)

-检查

> df1
  Percentage
1      34,56
2      44,44
3       3,25
> str(df1)
'data.frame':   3 obs. of  1 variable:
 $ Percentage: 'formattable' int  34,56 44,44 3,25
  ..- attr(*, "formattable")=List of 4
  .. ..$ formatter: chr "formatC"
  .. ..$ format   :List of 4
  .. .. ..$ format      : chr "f"
  .. .. ..$ big.mark    : chr ","
  .. .. ..$ digits      : num 0
  .. .. ..$ big.interval: num 2
  .. ..$ preproc  : NULL
  .. ..$ postproc : NULL

也可以进行计算,因为它是一个数字列

> df1$Percentage * 100
[1] 34,56,00 44,44,00 3,25,00 

数据

df1 <- structure(list(Percentage = c(3456L, 4444L, 325L)), class = "data.frame", row.names = c(NA, 
-3L))

【讨论】:

  • 谢谢!这行得通,但是值的类型是“”,当我将其保存为 excel 并打开它时,数字显示时没有逗号
  • @Clara 你不能拥有numeric 本身的类型并且拥有,。 formattable 通过修改格式来改变字符。虽然不清楚excel部分。这可能是 excel 格式中的问题
  • 如果我使用“.”?我想指定十进制数字的开始位置。谢谢!
  • @Clara 然后,您可以只使用format 并使用as.numeric 转换为numeric,即as.numeric(format(df1$Percentage, big.mark =".", big.interval = 2))#[1] 34.56 44.44 3.25
  • 非常感谢!这有效!
【解决方案2】:

我们可以用另一种方式来实现:

library(stringr)
library(dplyr)

x <- c("3333", "4223", "34215")

P1 <- x %>%
        str_replace_all("(^\\d{2})", "\\1.") %>%
        as.double() %>%
        data.frame() 

colnames()[1] <- "Percentage"

结果:

> P1
  Percentage
1     33.330
2     42.230
3     34.215

【讨论】:

    猜你喜欢
    • 2015-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-19
    • 2021-03-28
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多