簡體   English   中英

R:刪除包含特定字符的數據框元素

[英]R: Remove dataframe elements that contain a specific character

數據框包括包含特定字符(例如“ <”)的字符串:

DF <- data.frame(c(1,"<2",3),c("< 4",5,6),c(7,8,"<"),stringsAsFactors = FALSE)

我要刪除(例如轉換為NA)包含字符“ <”的那些元素。 我可以使用grep()通過列或行來做到這一點。 可以一次在整個數據框中完成此操作嗎? (最好有一個內襯)

@Ronak在上面的評論中給出的一線可能是此處進行的最簡單,最優雅的方法。 話雖如此,如果您需要搜索特定的字符串以替換NA ,那么這里是基本R選項:

data.frame(lapply(DF, function(x) { ifelse(grepl(".*<.*", x), NA, x) }))

這將用NA替換數據幀中包含<任何地方的每個條目,並且您可以輕松擴展以使用grepl來處理任何模式。

dplyr的解決方案。

library(dplyr)

DF2 <- DF %>% mutate_all(~ifelse(grepl("<", .), NA, .))
DF2
  c.1....2...NA. c....4...5..6. c.7..8......
1              1           <NA>            7
2           <NA>              5            8
3           <NA>              6         <NA>

或來自purrr的解決方案

library(purrr)

DF2 <- DF %>% map_dfc(~ifelse(grepl("<", .), NA, .))
DF2
# A tibble: 3 x 3
  c.1....2...NA. c....4...5..6. c.7..8......
           <chr>          <chr>        <chr>
1              1           <NA>            7
2           <NA>              5            8
3           <NA>              6         <NA>

或來自data.table的解決方案

library(data.table)
DF2 <- setDT(DF)[, lapply(.SD, function(x) ifelse(grepl("<", x), NA, x))]
DF2
   c.1....2...NA. c....4...5..6. c.7..8......
1:              1             NA            7
2:             NA              5            8
3:             NA              6           NA

暫無
暫無

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

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