我想从我的数据框中删除一些行.我认为使用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)
gear和carb列可以使用.如您所见,应从此数据中删除两个第一行,因为这两行在4这两列中具有相同的值.请转到我的数据中我没有数字值但字符串的帐户.
根据帖子中的信息,我认为“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)