[英]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.