在基础R中执行以下操作的dplyr模拟是什么?
iris$Sepal.Length[iris$Sepal.Length>2] <- iris$Sepal.Length[iris$Sepal.Length>2] * 10
我正在尝试使用过滤器,但无法返回到原始数据集(没有join
)
答案 0 :(得分:4)
您可以mutate
与ifelse
一起使用,以获得与@alistaire的评论相同的结果:
iris %>% mutate(Sepal.Length = ifelse(Sepal.Length > 2, Sepal.Length * 10, Sepal.Length))
答案 1 :(得分:1)
如果我们使用ifelse
,我们可以避开library(data.table)
as.data.table(iris)[Sepal.Length > 2, Sepal.Length := Sepal.Length * 10]
并加快速度
(1[0-9]{2})\s+(\w+(?:-\w+)+)\s+(\w+)\s+(\w+(?:-\w+)+)\s+(\w+)