【问题标题】:Comparing each values of each group to the minimum of the group将每组的每个值与组的最小值进行比较
【发布时间】:2020-08-13 16:19:18
【问题描述】:

我有按年份分组的数据。我想用 NA 替换 x>(minimum+2) 的每个数据。每年最低变化。 我正在考虑使用 ddply 逐年提取最小值,但我不知道如何将每年的每个值与其特定最小值进行比较...

非常感谢。

  New <-  Ancian %>%
group_by(Years) %>%
mutate_if(New$Data1, ~  replace(., . > (min(., na.rm = TRUE) + 2),  NA))

我试过这个,但它不起作用...... 还尝试在 group_by 之后执行“if”函数,但也没有结果...

group_by(Years) %>%
if(New$Data1 > (min(New$Data, na.rm = TRUE) + 2)) { 
New$Data1 <- NA }

【问题讨论】:

  • 您好,您能提供一些示例数据和一些代码来说明您到目前为止所尝试的内容吗?谢谢
  • 列(变量)是 [Years ,Data1, Data2],我想做到这一点并按年替换每一行,仅在 Data1 中。

标签: r replace compare plyr minimum


【解决方案1】:

我们可以在按“年”分组后使用mutate_if

library(dplyr)
df1update <-  df1 %>%
    group_by(years) %>%
    mutate_if(is.numeric, ~  replace(., . > (min(., na.rm = TRUE) + 2),  NA))

如果我们只需要对单个变量执行此操作

df1update <- df1 %>%
               group_by(years) %>%
               mutate(Data1 = replace(Data1, Data1 > (min(Data1, na.rm = TRUE) + 2), NA))

【讨论】:

  • 感谢您的回答!问题是我只想对数据集中的一个变量执行此操作,而不是所有数字变量
猜你喜欢
  • 2019-02-26
  • 1970-01-01
  • 1970-01-01
  • 2021-01-11
  • 2018-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-23
相关资源
最近更新 更多