簡體   English   中英

比較R中的兩行dataframe

[英]Compare the two rows of dataframe in R

我有一個數據集,我想在其中查找並顯示包含任何無效數據的行,例如速率值不在 MinCI 和 MaxCI 的范圍內,MinCI 大於 MaxCI 等。如果它們存在,請更改 MinCI 和 MaxCI 值在這些行中進入 NA。

   MinCI      MaxCI   City
    2.0        6.0    ABC
    4.2        8.0    XYZ
    3.6        1.2    CRS
    6.4        8.9    WUI
    7.8        5.4    IRK

因此,在第 3 行和第 5 行中,MinCI 大於 MaxCI,因此我們希望使用 R 將此列值填充為 NA。 對於數據集的完整列

我們可以創建一個邏輯索引並使用該索引將列值分配給NA

i1 <- with(df1, MaxCI < MinCI)
df1[i1, c('MaxCI', 'MinCI')] <- NA
df1
#  MinCI MaxCI City
#1   2.0   6.0  ABC
#2   4.2   8.0  XYZ
#3    NA    NA  CRS
#4   6.4   8.9  WUI
#5    NA    NA  IRK

數據

df1 <- structure(list(MinCI = c(2, 4.2, 3.6, 6.4, 7.8), MaxCI = c(6, 
8, 1.2, 8.9, 5.4), City = c("ABC", "XYZ", "CRS", "WUI", "IRK"
)), class = "data.frame", row.names = c(NA, -5L))

dplyr選項:

library(dplyr)
df1 %>% 
  mutate(across(MinCI:MaxCI, ~na_if(., MinCI < MaxCI)))

# A tibble: 5 x 3
  MinCI MaxCI City 
  <dbl> <dbl> <chr>
1   2     6   ABC  
2   4.2   8   XYZ  
3  NA    NA   CRS  
4   6.4   8.9 WUI  
5  NA    NA   IRK

暫無
暫無

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

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