[英]How to change levels of a variable that is a factor?
我有一個包含一些數值和一些字母的數據,因此我有
j = c( 5 , 6, 7, 6, 7,12 , missing , 6 ,7 8, missing , n/a, n/a, 5, 6)
我知道這被保存為具有級別數量的因素。 我想將n / a改為零,因為這是它的數值,但我不知道該怎么做。 我使用過簡單的命令,但它不會讓我,數據比我給的大,所以不能手動完成。
任何幫助都非常感謝。
帶有因子的問題是將值賦值給向量中的位置要求值在因子屬性的級別中。 您可以使用levels<-
-function在“級別”中增加可接受的值。
> j = factor( c( 5 , 6, 7, 6, 7,12 , 'missing' , 6 ,7, 8, 'missing' , 'n/a', 'n/a', 5, 6)
# Notice that I corrected your code since you didn't enclose the character values in quotes
# ,,,, and seemed to be missing a comma
> levels(j) <- c(levels(j), 0) # append to levels; keep initial order.
> j[j=='n/a'] <- 0
> j
[1] 5 6 7 6 7 12 missing 6
[9] 7 8 missing 0 0 5 6
Levels: 12 5 6 7 8 missing n/a 0
這種確切的語法不適用於你有真正的R NA
而不是'n / a'的情況,因為沒有任何東西==
是NA
。
再看一遍,我意識到我沒有看到@ akrun建議簡單地使用level<-
來修改“屬性”到位的美觀和簡潔。
levels(j)[levels(j)=='n/a'] <- 0
他的建議的邏輯具有不增加級別數量的可能期望的特征,即向量中的整數值保持相同,但是僅需要在屬性內修改它們的標簽。 我承認經常被R中的因素絆倒,個人失敗我顯然仍然在努力。
不確定但是也是如此,即使之后你必須轉換為數字並嘗試對那些"missing"
做其他代碼,因為正如你在這里看到的,所有都是強迫角色叮咬:
j <- as.factor(c( 5, 6, 7, 6, 7, 12, "missing", 6 , 7, 8, "missing" , "n/a", "n/a", 5, 6) )
gsub("n/a", 0, j)
[1] "5" "6" "7" "6" "7" "12" "missing" "6"
[9] "7" "8" "missing" "0" "0" "5" "6"
是j
載體或在一個數據幀中的變量?
如果j
在數據框中是可變的,您只需要:
df[is.na(df$j)] <- 0 # change all NAs to zero
df[df$j == "missing"] <- 0 # for strings (character values)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.