簡體   English   中英

使用R中的模板字符串將因子轉換為字符串

[英]Convert factor to a string using a template string in R

如果我有一個值為的數據幀

d = data.frame(value = runif(1000, 10,50))

並使用cut將值分類

d$class = cut(d$value, 4)

如何快速將factor對象轉換為表示范圍的字符串? 例如:

(10,20] -> "10 to 20"

我嘗試制作一個功能,但我想知道是否有更快的方法。

style.factor <- function(factors, template="%s to %s") {
  parts = str_split(str_sub(factors, 2, -2), ",", simplify=TRUE)
  return(sprintf(template, parts[,1], parts[,2]))
}
> style.factor(d$class)
  "40 to 50" "20 to 30" "30 to 40" ...

您可以使用sub來相對快速地執行此操作:

gsub("^\\((.+?),(.+?)\\]$", "\\1 to \\2", d$class)

使用類似於您的方法但具有levels功能。

 # extract levels
 levels_c <- levels(d$class)

 # form and assign new levels
 library(stringr)
 parts = str_split(str_sub(levels_c , 2, -2), ",", simplify=TRUE)
 template="%s to %s"
 levels(d$class) <- sprintf(template, parts[,1], parts[,2])

 # check the outcome
 levels(d$class)
 # [1] "10 to 20" "20 to 30" "30 to 40" "40 to 50"

當然,如果你想轉換為字符

d$class <- as.character(d$class)  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM