【发布时间】:2017-05-06 09:44:33
【问题描述】:
我有一个数据集,我想在某些情况下替换数据集中的值。
set.seed(100)
Mydata=sample(-5:5,size = 1000,replace = T)
Mydata=as.data.frame(matrix(Mydata,nrow = 100))
Mydata[Mydata<=-1 & Mydata>-1.5] = "A"
Mydata[Mydata<=-1.5 & Mydata>-2] = "B"
Mydata[Mydata<=-2] = "C"
Mydata[Mydata>-1] = "D"
结果应该是一个用“A”、“B”、“C”和“D”填充的数据框。但是,当我运行代码时,结果只填充了“D”。我想知道问题是什么。谢谢。
【问题讨论】:
-
您可以查看
?cut -
谢谢。你能解释为什么我的代码是错误的。非常感谢。
-
它基于@thelatemail 评论的覆盖。后一步的条件完全满足条件。还有
cut,类似cut(Mydata, breaks = c(-Inf, -2, -1.5, -1, Inf), labels = LETTERS[1:4]) -
按照@akrun的
cut建议,试试data.frame(lapply(Mydata, cut, breaks=c(-Inf, -2, -1.5, -1, Inf), labels=c("C","B","A","D")))