R:在列中用K替换最后3个零

时间:2019-05-31 18:21:51

标签: r gsub

我正在尝试用数据框中的一列中的K替换最后的3000

例如:

data <- data.frame(abc = c(1000, 100000, 450000))

abc <- 1000
then abc <- 1K

if 
abc <- 100000
then abc <- 100K

gsub或regex替换前三个零

我尝试过:

lapply(data$abc, gsub, pattern = "000", replacement = "K", fixed = TRUE)

此外,我如何使其在这样的时间间隔内工作:

data <- data.frame(abc = c("150000-250000", "100000-150000", "250000K+"))

2 个答案:

答案 0 :(得分:4)

一种选择是将index.html与1000一起使用,并粘贴“ K”

%/%

或使用library(dplyr) library(stringr) data %>% mutate(abc = str_c(abc %/% 1000, "K")) ,将字符串末尾的三个零(sub)匹配,并替换为$

"K"

如果我们使用间隔不同的字符串,请更改模式以在末尾(options(scipen = 999) sub("0{3}$", "K", data$abc) #[1] "1K" "100K" "450K" $之前匹配3个零,并替换为“ K”

-

答案 1 :(得分:1)

这里是您的代码的略微修改。 format是要关闭科学计数法。 sapply使输出成为向量。 000$表示仅匹配末尾的匹配项。

data <- data.frame(abc = c(1000, 100000, 450000))

data$abc <- format(data$abc, scientific = FALSE)

gsub(pattern = "000$", replacement = "K", data$abc)
# [1] "  1K" "100K" "450K"