[英]Rename one level of a factor in R
我正在嘗試重命名R中數據幀df
中因子column1
的級別A
我當前的方法是這樣的:
levels(df[!is.na(df$column1) & df$column1 == 'A',]) <- 'B'
它不會引發任何錯誤或警告但完全無效。
B
不是已經存在的級別(從我懷疑的試驗和錯誤很重要),所以以下,我的第一次嘗試,也沒有工作
df[!is.na(df$column1) & df$column1 == 'A', 'column1'] <- 'B'
任何人都可以指導我采取正確的方法嗎?
我打算建議
levels(df$column1)[levels(df$column1)=="A"] <- "B"
或使用效用函數plyr::revalue
:
library("plyr")
df <- transform(df,
column1=revalue(column1,c("A"="B")))
transform()
是一種不必要的糖; 你可以使用df$column1 <- revalue(df$column1(...))
為了完整性, car::recode
也可以工作,雖然我覺得plyr::revalue
有點笨拙(因為重新編碼被指定為帶引號的字符串)。
car::recode(df$column1,"'A'='B'")
一種方法是改變關卡的標簽。 首先,一些測試數據
df <- data.frame(column1=c("A","B","C","A","B"))
現在我們將“A”替換為“X”
levels(df$column1) <- gsub("A","X", levels(df$column1))
我們可以看到它已經改變了
column1
1 X
2 B
3 C
4 X
5 B
您可能需要小心使用gsub()
因為它接受正則表達式。 更具體的替代品將是
gsub("^A$","X", levels(df$column1))
完全匹配“A”而不是“CAB”或其他與大寫字母A.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.