我试图在dataframe的列中用K替换最后的3000。
例:
data <- data.frame(abc = c(1000, 100000, 450000))
abc <- 1000
then abc <- 1K
if
abc <- 100000
then abc <- 100K
gsub或regex替换前3个零。
我试过这个:
lapply(data$abc, gsub, pattern = "000", replacement = "K", fixed = TRUE)
此外,如何使它在间隔时间内工作,例如:
data <- data.frame(abc = c("150000-250000", "100000-150000", "250000K+"))
发布于 2019-05-31 10:23:58
一个选项是在1000中使用%/%
并粘贴"K“
library(dplyr)
library(stringr)
data %>%
mutate(abc = str_c(abc %/% 1000, "K"))
或者使用sub
,匹配字符串末尾的3个零($
),然后用"K"
替换
options(scipen = 999)
sub("0{3}$", "K", data$abc)
#[1] "1K" "100K" "450K"
如果有不同的字符串具有间隔,则将模式更改为在末尾($
)或在-
之前匹配3个零,并将其替换为"K“
gsub("0{3}(?=-|$)", "K", "150000-250000", perl = TRUE)
#[1] "150K-250K"
发布于 2019-05-31 10:27:33
下面是对代码的轻微修改。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"
https://stackoverflow.com/questions/56400052
复制相似问题