簡體   English   中英

如何輕松重命名R中數據框中的所有因子?

[英]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.frametibble目前擁有的價值觀"none_1-1.jpg", "none_1-2.jpg", ...

如果是這種情況,我注意到替換值只是"C"和文件名中兩個數字的串聯。 可能使用Eyedata %>% mutate(MediaName = paste0('C', gsub('\\\\D+', '', MediaName)))這樣的方式來使用較少的硬編碼的更有效的方法將被替換為非數字的所有實例都帶有空格的所有實例,並將"C"附加到其余數字。 (如果已經加載了stringrtidyverse ,則可以使用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.

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