我正在尝试用数据框中的一列中的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+"))
答案 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"