R 将列值与另一列进行比较

R 将列值与另一列进行比较,r,dplyr,data-manipulation,R,Dplyr,Data Manipulation,我有以下数据: set.seed(1) data <- data.frame( id = 1:500, ht_1 = rnorm(500,10:20), ht_2 = rnorm(500,15:25), ht_3 = rnorm(500,20:30), ht_4 = rnorm(500,25:35), ht_5 = rnorm(500,20:40) ) set.seed(1) dataHi您可以像这样使用mutate\u at功能: library(tidyverse) data

我有以下数据:

set.seed(1)

data <- data.frame(
id = 1:500, ht_1 = rnorm(500,10:20), ht_2 = rnorm(500,15:25),
ht_3 = rnorm(500,20:30), ht_4 = rnorm(500,25:35), 
ht_5 = rnorm(500,20:40)
)
set.seed(1)

dataHi您可以像这样使用
mutate\u at
功能:

library(tidyverse)

data %>% as_tibble %>% 
  mutate_at(vars(paste0("ht_", 1:4)), ~if_else(.x > ht_5, ht_5, .x))
在这种情况下,您还可以使用
pmin
而不是
if\u else
,后者应该更快

data %>% as_tibble %>% 
      mutate_at(vars(paste0("ht_", 1:4)), ~pmin(.x, ht_5))
要查看有多少值大于
ht_5
,可以使用
summary_at
功能:

data %>% as_tibble %>% 
  summarize_at(vars(paste0("ht_", 1:4)), ~ length(.x[.x > ht_5]))

# A tibble: 1 x 4
   ht_1  ht_2  ht_3  ht_4
  <int> <int> <int> <int>
1     6    39   131   258
数据%>%作为可存储%>%
在(vars(paste0(“ht”,1:4))、~length(.x[.x>ht_5])处汇总
#一个tibble:1 x 4
ht_1 ht_2 ht_3 ht_4
1     6    39   131   258

到目前为止您尝试了什么?是
数据%>%突变(ht_1=ifelse(ht_1>ht_5,ht_1,ht_5))
产生了您想要的?谢谢,但我想先看看有多少值大于ht_5