如何根据子集函数从数据框中删除行?

Sha*_*ver 5 r

我想从我的数据框中删除一些行.我认为使用subset它将是最简单的方法.

我之前使用以下代码删除了一些行:

data_selected <- subset(tbl_data, Name.x != "XXX" & Name.y != "YYY")
Run Code Online (Sandbox Code Playgroud)

问题是如何从我的表中删除两个单元格(同一行)中具有相同字符串的行.

我认为这mtcars可以作为一个例子:

                     mpg cyl  disp  hp drat    wt  qsec vs am gear carb
Mazda RX4           21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
Mazda RX4 Wag       21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
Datsun 710          22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
Hornet 4 Drive      21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
Hornet Sportabout   18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
Run Code Online (Sandbox Code Playgroud)

gearcarb列可以使用.如您所见,应从此数据中删除两个第一行,因为这两行在4这两列中具有相同的值.请转到我的数据中我没有数字值但字符串的帐户.

akr*_*run 6

根据帖子中的信息,我认为“gear”和“carb”列之间的比较( )对于数据集!=来说就足够了subset

df1 <- mtcars[1:5,]
subset(df1, gear!=carb)
#                     mpg cyl disp  hp drat    wt  qsec vs am gear carb
#Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
#Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
#Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
Run Code Online (Sandbox Code Playgroud)

这也适用于“非数字”列,但不适用于部分匹配。

如果我们需要例外地保留同时具有“Unknown”的行,我们可以|在向原始条件添加另一个逻辑条件 (`(gear=='Unknown' & carb=='Unknown')) 后使用该运算符。

在数据集中进行一些更改以显示输出(仅作为示例,我知道我正在通过执行此操作将数字列更改为字符)

 df1$gear[4] <- 'Unknown'
 df1$carb[4] <- 'Unknown'
 df1$gear[5] <- 'Unknown'


subset(df1, (gear=='Unknown' & carb=='Unknown') | gear!=carb)
#                   mpg cyl disp  hp drat    wt  qsec vs am    gear    carb
#Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1       4       1
#Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0 Unknown Unknown
#Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0 Unknown       2
Run Code Online (Sandbox Code Playgroud)