0
我有一個很大的數據框,有很多我想要清理的字符串值。有條件的數據幀突變
例子:
students <- data.frame(name = c("John", "Jerry", "Bill", "Tom", "Mary", "Bill"),
class = c("A", "B", "-", "#NA", "A", "low"), stringsAsFactors = FALSE)
我希望每一個學生誰不是在A類,B或C設置爲D. 我目前的解決辦法是:
'%!in%' <- function(x,y)!('%in%'(x,y))
for(i in 1:nrow(students)) {
if(students$class[i] %!in% c("A", "B", "C")) {
students$class[i] <- "D"
}
}
有沒有更好的解決方案比這個,最好有管道,因爲有像這樣的列數?
謝謝! !
另一種方式是通過'replace','$學生類<我們可以做到這一點沒有環 - 更換(以%C $學生類,學生類$%( 「A」,「B」,「C」),「D」)或'ifelse','students $ class < - ifelse(students%class%in%c(「A」,「B」,「C 「),學生$ class,」D「)' –
或者非常類似'students%>%mutate(class = if_else(class%in%LETTERS [1:3],class,」D「))' – Axeman
另請參閱' forcats :: fct_other'。 – Axeman