在不指定行或列的情况下替换整个数据框中的值的合适方法是什么?
让我们假设我想将abs(x) > .5
的所有值替换为<- "duck"
在这种情况下
> df <- data.frame(a = rnorm(5), b = rnorm(5), c = rnorm(5))
> df
a b c
1 1.37481216 -0.1760366 -0.5122730
2 0.09204844 -0.4270991 0.3211998
3 -0.43563818 0.7560178 0.5399643
4 -0.02078887 0.5961020 -0.5985515
5 0.99129234 -0.9959395 -0.6488177
所需的输出将是
a b c
1 "duck" -0.1760366 "duck"
2 0.09204844 -0.4270991 0.3211998
3 -0.43563818 "duck" "duck"
4 -0.02078887 "duck" "duck"
5 "duck" "duck" "duck"
虽然this post需要列的说明,但我正在寻找整个数据帧的动态替换。
谢谢
答案 0 :(得分:1)
基本R
df[abs(df) > 0.5] <- "duck"
答案 1 :(得分:1)
使用replace
:
replace(df,abs(df)>0.5,"duck")
答案 2 :(得分:1)
一种dplyr
解决方案:
df %>%
mutate_all(funs(ifelse(abs(.) > .5, "duck", .)))