[英]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.