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