将具有条件的行删除到数据帧中的另一列



我有这个4列的数据帧,我想删除那些不小于100与col_A之差的行

User    Col_A   Col_B   Col_C
a    1450    1450    1250
b    1450    1450    1440
c    1320    1280    1225
d    1300    1300    1190
e    1295    1250    1200
f    1295    1295    1250
g    1295    1240    1000
h    1295    1295    1260
j    1295    1295    1260
k    1295    1295    1260
l    1295    1295    1190
m    1295    1295    1260
n    1250    1250    1220
o    1200    1200    1160
p    1180    1180    1070
q    1030    1030    990

我只想在我的数据帧中保留那些基于Column_C中数据的行,这些行小于等于Column_A 的差100

User    Col_A   Col_B   Col_C
b    1450    1450    1440
c    1320    1280    1225
e    1295    1250    1200
f    1295    1295    1250
h    1295    1295    1260
j    1295    1295    1260
k    1295    1295    1260
m    1295    1295    1260
n    1250    1250    1220
o    1200    1200    1160
q    1030    1030    990

我正在尝试使用以下代码来过滤行,但无法获得所需的输出。

df<- filter(df, Col_C<=Col_A & Col_C>=Col_A-100)

提前谢谢。

您可以使用subset

subset(df, (Col_A - Col_C) <= 100)
#   User Col_A Col_B Col_C
#2     b  1450  1450  1440
#3     c  1320  1280  1225
#5     e  1295  1250  1200
#6     f  1295  1295  1250
#8     h  1295  1295  1260
#9     j  1295  1295  1260
#10    k  1295  1295  1260
#12    m  1295  1295  1260
#13    n  1250  1250  1220
#14    o  1200  1200  1160
#16    q  1030  1030   990

或使用filter

dplyr::filter(df, (Col_A - Col_C) <= 100)

数据

df <- structure(list(User = structure(1:16, .Label = c("a", "b", "c", 
"d", "e", "f", "g", "h", "j", "k", "l", "m", "n", "o", "p", "q"
), class = "factor"), Col_A = c(1450L, 1450L, 1320L, 1300L, 1295L, 
1295L, 1295L, 1295L, 1295L, 1295L, 1295L, 1295L, 1250L, 1200L, 
1180L, 1030L), Col_B = c(1450L, 1450L, 1280L, 1300L, 1250L, 1295L, 
1240L, 1295L, 1295L, 1295L, 1295L, 1295L, 1250L, 1200L, 1180L, 
1030L), Col_C = c(1250L, 1440L, 1225L, 1190L, 1200L, 1250L, 1000L, 
1260L, 1260L, 1260L, 1190L, 1260L, 1220L, 1160L, 1070L, 990L)),
class = "data.frame", row.names = c(NA, -16L))

使用data.table

library(data.table)
setDT(df1)[(Col_A - Col_C) <= 100]

数据

df1 <- structure(list(User = structure(1:16, .Label = c("a", "b", "c", 
"d", "e", "f", "g", "h", "j", "k", "l", "m", "n", "o", "p", "q"
), class = "factor"), Col_A = c(1450L, 1450L, 1320L, 1300L, 1295L, 
1295L, 1295L, 1295L, 1295L, 1295L, 1295L, 1295L, 1250L, 1200L, 
1180L, 1030L), Col_B = c(1450L, 1450L, 1280L, 1300L, 1250L, 1295L, 
1240L, 1295L, 1295L, 1295L, 1295L, 1295L, 1250L, 1200L, 1180L, 
1030L), Col_C = c(1250L, 1440L, 1225L, 1190L, 1200L, 1250L, 1000L, 
1260L, 1260L, 1260L, 1190L, 1260L, 1220L, 1160L, 1070L, 990L)),
class = "data.frame", row.names = c(NA, -16L))

最新更新