变异以按组从其他列中创建具有最大值和最小值的新列

问题描述 投票:0回答:1

假设我的数据集有两列

A = c(1,5,NA,NA,NA)
B = c(NA,NA,10,11,13)

如何创建一个新列 C,它采用 A 中的最大值和 B 中的最小值来创建新列:

C= c(NA,5,10,NA,NA)
r dplyr max min mutate
1个回答
0
投票

dplyr

library(dplyr)
quux %>%
  mutate(
    C2 = case_when(
      row_number() == which.max(A) ~ A, 
      row_number() == which.min(B) ~ B, 
      TRUE ~ NA)
  )
#    A  B  C C2
# 1  1 NA NA NA
# 2  5 NA  5  5
# 3 NA 10 10 10
# 4 NA 11 NA NA
# 5 NA 13 NA NA

基础R

(我不太喜欢嵌套

ifelse
,但这并不复杂......)

with(quux, ifelse(seq_along(A) == which.max(A), A,
                  ifelse(seq_along(A) == which.min(B), B, NA)))
# [1] NA  5 10 NA NA

数据

quux <- structure(list(A = c(1, 5, NA, NA, NA), B = c(NA, NA, 10, 11, 13), C = c(NA, 5, 10, NA, NA)), class = "data.frame", row.names = c(NA, -5L))
© www.soinside.com 2019 - 2024. All rights reserved.