基于多列上的值删除R中的行

基于多列上的值删除R中的行,r,R,我正在尝试从数据帧中删除行 dataframe <- filter(dataframe, col1 != "NONE" & str_length(col1) != 0) 我需要删除在我提供的整个列范围内仅包含的“无”或空白的行。需要删除的行必须满足以下条件1。仅“无”和空白或全部“无”或全部空白的组合 dataframe <- filter(dataframe, col1 != "NONE" & str_length(col1) != 0) 因为在某些情况下,在某

我正在尝试从数据帧中删除行

dataframe <- filter(dataframe, col1 != "NONE" & str_length(col1) != 0)
我需要删除在我提供的整个列范围内仅包含“无”或空白的行。需要删除的行必须满足以下条件1。仅“无”和空白或全部“无”或全部空白的组合

dataframe <- filter(dataframe, col1 != "NONE" & str_length(col1) != 0)
因为在某些情况下,在某些列中使用“无”或空白是可以的,所以我不能在csv中使用类似于

dataframe$col1 =="NONE" | str_length(dataframe$col1)==0
dataframe <- filter(dataframe, col1 != "NONE" & str_length(col1) != 0)
我知道这通常是一个简单的问题,我可以运行一个for循环,将数据帧中的所有“NONE”值和空格转换为NA,并在我需要的任何列中使用
complete.cases
)。但是,我被特别要求使用一种不改变值的方法。有什么建议吗

dataframe <- filter(dataframe, col1 != "NONE" & str_length(col1) != 0)
编辑:我没有数据,但这里有一个虚构的数据框示例,与我必须使用的数据框类似

dataframe <- filter(dataframe, col1 != "NONE" & str_length(col1) != 0)

dataframe <- filter(dataframe, col1 != "NONE" & str_length(col1) != 0)
在此数据框中,唯一必须删除的行是第3行(如果包含标题,则为第4行)

dataframe <- filter(dataframe, col1 != "NONE" & str_length(col1) != 0)

最终的数据集将比这个虚构的示例有更多的列

我建议使用dplyr包(tidyverse库的一部分)中的
filter()
命令。它看起来像这样:

dataframe <- filter(dataframe, col1 != "NONE" & str_length(col1) != 0)

dataframe\u new我建议使用dplyr包(tidyverse库的一部分)中的
filter()
命令。它看起来像这样:

dataframe <- filter(dataframe, col1 != "NONE" & str_length(col1) != 0)

dataframe\u new由于需要删除无和空白的行,因此将:

dataframe <- filter(dataframe, col1 != "NONE" & str_length(col1) != 0)

dataframe由于需要删除无和空白的行,它将是:

dataframe <- filter(dataframe, col1 != "NONE" & str_length(col1) != 0)

dataframe您可以使用
dplyr::filter\u all()
来完成以下操作:

dataframe <- filter(dataframe, col1 != "NONE" & str_length(col1) != 0)
library(dplyr)

df <- data.frame(column.1 = c('a', 'b', 'NONE', 'b', 'b'),
                 column.2 = c('a', 'b', '', 'b', 'b'),
                 column.3 = rep('', 5),
                 column.4 = rep('', 5),
                 column.5 = rep('', 5))

df %>%
  filter_all(any_vars(. != 'NONE' & . != ''))
库(dplyr)
df%
过滤所有(任何变量(.!='NONE'&.!='')

您可以使用
dplyr::filter\u all()
来完成以下操作:

dataframe <- filter(dataframe, col1 != "NONE" & str_length(col1) != 0)
library(dplyr)

df <- data.frame(column.1 = c('a', 'b', 'NONE', 'b', 'b'),
                 column.2 = c('a', 'b', '', 'b', 'b'),
                 column.3 = rep('', 5),
                 column.4 = rep('', 5),
                 column.5 = rep('', 5))

df %>%
  filter_all(any_vars(. != 'NONE' & . != ''))
库(dplyr)
df%
过滤所有(任何变量(.!='NONE'&.!='')


|
替换为
|
好的,我改了!如果您需要更多帮助,请提供示例数据。您能将
dput(head(dataframe))
的输出粘贴到您的问题中吗?将
|
替换为
|
好的,我更改了它!如果您需要更多帮助,请提供示例数据。您可以粘贴来自
dput(head(dataframe))的输出吗
进入您的问题?我认为仅查看一列这样的内容是行不通的,因为它涉及到列的范围,如果我使用上述方法给出列的范围,我会删除示例数据框中的每一行吗?我认为仅查看一列这样的内容是行不通的,因为它涉及到列的范围,如果我使用上面的方法给出了列的范围,我是否可以删除示例dataframe中的每一行?我不确定这是否适用于示例dataframe。如果我用这样的过滤器给出列的范围,我会删除示例数据帧中的每一行,而不是像我所希望的那样只删除第3行吗?这取决于数据。如果第1行中没有列.3,那么您希望删除第1行和第3行,对吗?因此,如果在考虑所有列时,大多数行中都没有空格,那么是的,大多数行都会被删除。否如果第1行第3列中没有空格,我就不想删除第1行,因为第1列和第2列中有一些可用数据。这是关于该行的每一列中是否只有“NONE”或空白,我不确定这是否适用于我的示例数据帧。如果我用这样的过滤器给出列的范围,我会删除示例数据帧中的每一行,而不是像我所希望的那样只删除第3行吗?这取决于数据。如果第1行中没有列.3,那么您希望删除第1行和第3行,对吗?因此,如果在考虑所有列时,大多数行中都没有空格,那么是的,大多数行都会被删除。否如果第1行第3列中没有空格,我就不想删除第1行,因为第1列和第2列中有一些可用数据。这是关于在该行的每一列中是否只有“无”或空白。嗯,好的,我对这个示例数据应用了
df
,没有任何更改。嗯,好的,我对这个示例数据应用了
df
,没有任何更改。这就是它!最后一个问题:如果我只想让过滤器检查第5列到第60列,如何将此应用于数据帧中的一系列列?我并不是说删除列只是因为过滤器只会检查第5列到第60列。你可以使用dplyr选择帮助程序:过滤器(df,vars(以(“列”)开头),任何变量(.!='NONE'&.!='')如果这个答案有效,请绿色检查它,以便其他人更容易找到它。谢谢,就是这个!最后一个问题:如果我只想让过滤器检查第5列到第60列,如何将此应用于数据帧中的一系列列?我并不是说删除列只是因为过滤器只会检查第5列到第60列。你可以使用dplyr选择帮助程序:过滤器(df,vars(以(“列”)开头),任何变量(.!='NONE'&.!='')如果这个答案有效,请绿色检查它,以便其他人更容易找到它。非常感谢。