我有两个数据集

d1=structure(list(et = c("s", "s"), gg = c("d", "d"), hj = c("f", 
"f"), ggh = c("h", "h"), wer = c(23L, 45L)), class = "data.frame", row.names = c(NA, 
-2L))

d2=structure(list(et = c("s", "s"), gg = c("d", "d"), hj = c("f", 
"f"), ggh = c("h", "f"), wer = c(3L, 7L)), class = "data.frame", row.names = c(NA, 
-2L))

我根据以下原则进行值的更改:如果在数据集d2中,相同类别的值werd1,小于或大于1上该类别的中位数d1,则在d2中,将中位数的值放入该类别.

为了更清楚地了解我想要什么,从d1开始

et  gg  hj  ggh (this categorical vars)
s   d   f   h

wer的中值=34

d2具有相同的s d f h类,其中wer=3,所以3<所以我必须改变34的这个值,

现在我使用代码

library(dplyr)

d1 %>% 
  group_by(across(-wer)) %>% 
  summarise(wer = median(wer), .groups = "drop") %>% 
  right_join(d2, by = c("et", "gg", "hj", "ggh"), suffix = c("", ".y")) %>% 
  mutate(wer = ifelse(wer >= wer.y, wer, wer.y), .keep = "unused")

它做了我需要的,但是,对于d1中的未知类别,它将NA

  et    gg    hj    ggh     wer
  <chr> <chr> <chr> <chr> <dbl>
1 s     d     f     h        34
2 s     d     f     f        NA

但必须是d2中此类产品的真实价值

  et    gg    hj    ggh     wer
  <chr> <chr> <chr> <chr> <dbl>
1 s     d     f     h        34
2 s     d     f     f        7

我该怎么修?

推荐答案

当存在NA时,比较运算符返回NA

> 7 > NA
[1] NA

在代码中,我们只需要通过使用is.na添加一个条件来对NA进行校正

library(dplyr)
d1 %>% 
   group_by(across(-wer)) %>% 
   summarise(wer = median(wer), .groups = "drop") %>% 
   right_join(d2, by = c("et", "gg", "hj", "ggh"), suffix = c("", ".y")) %>% 
   mutate(wer = ifelse(wer >= wer.y & !is.na(wer), wer, wer.y), .keep = "unused")
# A tibble: 2 × 5
  et    gg    hj    ggh     wer
  <chr> <chr> <chr> <chr> <dbl>
1 s     d     f     h        34
2 s     d     f     f         7

R相关问答推荐

替换收件箱的子集(行和列)

pivot_longer:names_to和names_pattern

使用Shiny组合和显示复制和粘贴的数据

使用R的序列覆盖

ggplot geom_smooth()用于线性回归虚拟变量-没有回归线

使用R中的Shapetime裁剪格栅文件

terra nearest()仅为所有`to_id`列返回NA

在数学中正确显示摄氏度、开氏度或华氏度

R Sapply函数产生的值似乎与for循环方法略有不同

如何计算多个日期是否在一个日期范围内

在ggplot中为不同几何体使用不同的 colored颜色 比例

有效识别长载体中的高/低命中

根据列A中的差异变异列,其中行由列B中的相对值标识

如何在R中使用hmm TMB提前一步预测观察到的状态?

如何将这个小列表转换为数据帧?

将统计检验添加到GGPUBR中的盒图,在R

计算Mean by分组和绑定到R中的数据集

在不重复主题的情况下重新排列组

有没有办法将勾选/审查标记添加到R中的累积关联图中?

如何在访问之前下载的输入时同时上传和处理所有指定的shiny 输入?