假设我的数据集有两列
A = c(1,5,NA,NA,NA)
B = c(NA,NA,10,11,13)
如何创建一个新列 C,它采用 A 中的最大值和 B 中的最小值来创建新列:
C= c(NA,5,10,NA,NA)
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
(我不太喜欢嵌套
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))