簡體   English   中英

將列值與另一列進行比較

[英]Compare column values against another column

我有以下數據:

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)
)

我想,以確定列中的值ht_1:ht_4是比在列中的值更大ht_5 (觀察和裝置的數量)。

對於這些列中的每一列,我ht_5ht_5替換任何大於ht_5ht_5

嗨,您可以像這樣使用mutate_at函數:

library(tidyverse)

data %>% as_tibble %>% 
  mutate_at(vars(paste0("ht_", 1:4)), ~if_else(.x > ht_5, ht_5, .x))

在這種情況下,您也可以使用pmin代替if_else ,它應該更快。

data %>% as_tibble %>% 
      mutate_at(vars(paste0("ht_", 1:4)), ~pmin(.x, ht_5))

看看有多少值都大於ht_5可以使用summarise_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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM