只有当变量ab的相应值大于4时,我才想从另一个数据框的列c中提取数据.例如,对于受访者ID 001,a_1b_1不是都大于4,因此它将返回NA.但是a_3b_3都大于4,所以它将返回相应的c_3值(即"b").

data <- data.frame(
  ID = c("001", "002", "003"),
  a_1 = c(2, 5, 7),
  a_2 = c(7, 3, 2),
  a_3 = c(5, 5, 7),
  b_1 = c(1, 7, 3),
  b_2 = c(3, 3, 5),
  b_3 = c(5, 7, 7),
  c_1 = c("a", "b", "c"),
  c_2 = c("c", "a", "a"),
  c_3 = c("b", "a", "c")
)

期望输出

data <- data.frame(
  ID = c("001", "002", "003"),
  c_1 = c(NA, "b", NA),
  c_2 = c(NA, NA, NA),
  c_3 = c("b", "a", "c")
)

推荐答案

if_else + if_alldplyr解决方案:

library(dplyr)

data %>%
  mutate(across(c_1:c_3, ~ if_else(
           if_all(ends_with(sub('c', '', cur_column())), `>`, 4), .x, NA
         )), .keep = "unused")

#    ID  c_1  c_2 c_3
# 1 001 <NA> <NA>   b
# 2 002    b <NA>   a
# 3 003 <NA> <NA>   c

R相关问答推荐

是否有任何解决方案可以优化VSCode中RScript的图形绘制?

在位置周围设定一个半径并识别该半径内的其他位置

格点中指数、双曲和反双曲模型曲线的正确绘制

如何将dygraph调用到R Markdown作为一个shiny 的react 对象的参数?

如何将旋转后的NetCDF转换回正常的纬度/经度网格,并使用R?

计算具有奇数日期的运行金额

如何在区分不同条件的同时可视化跨时间的连续变量?

标识R中多个列中缺少的唯一值

未识别时区

将. xlsx内容显示为HTML表

仅 Select 超过9行的CSV文件

R中1到n_1,2到n_2,…,n到n_n的所有组合都是列表中的向量?

在R函数中使用加号

跨列查找多个时间报告

使用不同的定性属性定制主成分分析中点的 colored颜色 和形状

使用geom_iles在一个切片中包含多个值

如何将EC50值绘制在R中的剂量-react 曲线上?

列间序列生成器的功能

使用nls()函数的非线性模型的半正态图

如何将数据框压缩为更宽,同时将行输入保持为行输入,而不是R中的列名?