gpt4 book ai didi

r - 在 R 中用 mutate_at 覆盖很多列?

转载 作者:行者123 更新时间:2023-12-04 10:31:52 37 4
gpt4 key购买 nike

给定以下 dataframe 我正在尝试使用 dplyr::mutate_at 改变除 cd 列以外的所有列> 使用 lambda 函数但没有运气:

structure(list(a = c(1, 2, 3), b = c(43, 2, -1), c = c(234242, 
-223, 1), d = c(1, 1, 2)), .Names = c("a", "b", "c", "d"), row.names = c(NA,
-3L), class = c("tbl_df", "tbl", "data.frame"))

df %>% mutate_at(vars(-c("c", "d"), funs(x = x + rnorm(1, mean = mean(x), sd = sd(x))

我想覆盖现有的 a 和 b 列,而不需要手动相互改变。请指教。

注意:我的真实数据集很相似,但它有 50 列要变异并添加这个正态分布随机变量值。除了特定的列,我想自动化它。

最佳答案

你快到了。需要更改的两件小事:

  1. x 更改为
  2. 访问不带引号的列名:-c(c, d) 而不是 -c("c", "d")

这导致

df %>% mutate_at(vars(-c(c, d)), funs(. + rnorm(1, mean = mean(.), sd = sd(.))))                                    

效果很好。输出是:

# A tibble: 3 x 4
a b c d
<dbl> <dbl> <dbl> <dbl>
1 3.05 56.6 234242 1
2 4.05 15.6 -223 1
3 5.05 12.6 1 2

关于r - 在 R 中用 mutate_at 覆盖很多列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51745119/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com