首页 > 解决方案 > 合并多列,但只保留 r 中的最大值

问题描述

我有一个大数据框。我想合并 edu0、edu1、edu2、edu3 列并创建新列,但只保留列中每个参与者 (id) 的最大值。在新的 edu 列中可以包含 NA。不得更改 ID 或参与者的顺序。我怎么做?

下面的示例数据。

df <- data.frame(id = 11:60, edu0=1:50, edu1=rnorm(50), edu2=rpois(50, 10), edu3= 0:49)

library(naniar)

df <- df %>%
  replace_with_na(replace = list(edu0 = c(5,11),
                                 edu1 = c(1.1357996, -0.2710641), 
                                 edu2 = c(8, 12, 14, 15), 
                                 edu3= c(3, 5, 6, 7, 9, 11, 15)))

标签: rdataframe

解决方案


您是否希望从每行中创建一个具有最大值的列?如果是这样,只需使用一个简单的应用功能。

df$maximum <- apply(X = df[,2:5],                     #data.frame without your id column
                MARGIN = 1,                           #apply this function over rows
                FUN = function(x) max(x,na.rm = TRUE) #maximum function with NA removed.
                )

推荐阅读