我想删除Month
和Mo
列相隔超过1个月的数据框中的所有行。我听说你可以用all.equal(df$Month, df$Mo, 1)
做到这一点,但它只是返回一个字符串。这可能在R?
Row Month Mo
1 1 1
1 2 4 #<-Remove
答案 0 :(得分:1)
您可以使用dplyr
library(dplyr)
df %>%
filter(Month == Mo | Month == Mo+1 | Month == Mo-1)
答案 1 :(得分:1)
根据?all.equal
文档,all.equal
的返回值为
TRUE(attr.all.equal为NULL)或描述目标与当前之间差异的模式“character”向量。
所以不,你不能用all.equal
来做,因为它返回一个值。您可以在文档中查看有关函数功能的更多详细信息。
要做你想做的事,你可以使用普通的R:
d <- data.frame(Row = 1:2, Month = 1:2, Mo = c(1,4)) # your data.frame
# Row Month Mo
# 1 1 1 1
# 2 2 2 4
d[!(abs(d$Month - d$Mo) > 1),] # d without rows where Month and Mo are far apart.
# Row Month Mo
# 1 1 1 1
或等效
d[abs(d$Month - d$Mo) <= 1,]