[英]How to easily rename all the factors in a dataframe in R?
我已經使用plyr包中的revalue函數重命名了所有因子。 但是,我認為可能有更簡單的方法來解決此問題。
cleandata <- Eyedata%>%
mutate(MediaName = revalue(MediaName, c("none_1-1.jpg" = "C11",
"none_1-2.jpg" = "C12", "none_1-3.jpg" = "C13",
"none_1-4.jpg" = "C14", "none_1-5.jpg" = "C15",
"none_1-6.jpg" = "C16", "none_1-7.jpg" = "C17",
"none_1-8.jpg" = "C18", "none_1-9.jpg" = "C19",
"none_2-1.jpg" = "C21", "none_2-2.jpg" = "C22",
"none_2-3.jpg" = "C23", "none_2-4.jpg" = "C24",
"none_2-5.jpg" = "C25", "none_2-6.jpg" = "C26",
"none_2-7.jpg" = "C27", "none_2-8.jpg" = "C28",
"none_2-9.jpg" = "C29")))
如果我在的假設是正確的, MediaName
在列Eyedata
data.frame
或tibble
目前擁有的價值觀"none_1-1.jpg", "none_1-2.jpg", ...
?
如果是這種情況,我注意到替換值只是"C"
和文件名中兩個數字的串聯。 可能使用Eyedata %>% mutate(MediaName = paste0('C', gsub('\\\\D+', '', MediaName)))
這樣的方式來使用較少的硬編碼的更有效的方法將被替換為非數字的所有實例都帶有空格的所有實例,並將"C"
附加到其余數字。 (如果已經加載了stringr
或tidyverse
,則可以使用str_c()
代替。)
正如@Benjamin Ye指出的,您需要串聯:
Eyedata %>% mutate(MediaName = paste0("C", str_extract(MediaName, "[0-9]+-[0-9]+")))) %>% mutate(MediaName = gsub("-", "", MediaName))
您可以使用str_extract
包中的stringr
來獲取帶有數字的字符串部分,並使用gsub刪除-
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.