【问题标题】:Can't remove row with empty value with the common methods nor whitespace of dataframe无法使用常用方法或数据框的空白删除具有空值的行
【发布时间】:2022-08-16 23:05:57
【问题描述】:

我有一个数据框,但无法删除第 8 行:

PKV_clean
   ID            x
1   1      scharfkantig
2   1                 t
4   1    seit paartagen
8   1                  
10  1          knirscht
11  1  schiene empohlen
12  1           meldet 

两者都不:

PKV_clean <- PKV_clean[!apply(is.na(PKV_clean) | PKV_clean == \" \", 1, all),]

PKV_clean <- PKV_clean[!(is.na(PKV_clean$x) | PKV_clean$x ==\"\"), ]

删除 NA 和空白空间。

当我建立语料库时,我也不能删除第 12 行中的单个空格。

PKV_clean <-  tm_map(PKV_clean, stripWhitespace)

此功能有效,没有错误消息,但不会删除任何内容。 是否有任何隐藏的字符串不会显示给查看者?

编辑1:

dput(PKV_clean)
structure(list(ID = c(\"1\", \"1\", \"1\", \"1\", \"1\", \"1\", \"1\"), x = c(\"    scharfkantig\", 
\"t\", \" seit paartagen\", \" \", \" knirscht\", \" schiene empohlen\", 
\"  meldet \")), row.names = c(1L, 2L, 4L, 8L, 10L, 11L, 12L), class = \"data.frame\")
  • 请使用dput 提供可重现的数据集。您将有更多机会得到答案。
  • “可重现的数据集”是什么意思?我应该编辑我的帖子并复制粘贴 dput(PKV_clean) 还是应该将其上传到像 github 这样的外部平台上?
  • 复制粘贴dput(PKV_clean) 的输出。为您的对象或列使用较短的名称(如dat)也会有所帮助。

标签: r


【解决方案1】:

您的向量 x 中有很多不必要的空间。第 8 行实际上是 " ",而不是 ""。首先,您可以修剪空白,然后过滤掉空字符串:

library(dplyr)
library(stringr)
df %>% 
  mutate(x = str_trim(x)) %>% 
  filter(x != "")

  ID                x
1  1     scharfkantig
2  1                t
3  1   seit paartagen
4  1         knirscht
5  1 schiene empohlen
6  1           meldet

更直接地说,你可以这样做(如果你不关心列其他部分的空格):

df[df$x != " ", ]

【讨论】:

    【解决方案2】:

    我们也可以使用base R

    subset(PKV_clean, nzchar(trimws(x)))
       ID                 x
    1   1      scharfkantig
    2   1                 t
    4   1    seit paartagen
    10  1          knirscht
    11  1  schiene empohlen
    12  1           meldet 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-14
      • 1970-01-01
      • 2013-03-10
      • 2014-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-25
      相关资源
      最近更新 更多