R-如何根据两列值之间的逻辑参数删除行
我想知道如何删除两个不同列中的值不相同的行。下面是一个例子来说明我的问题:R-如何根据两列值之间的逻辑参数删除行,r,dataframe,duplicates,row,R,Dataframe,Duplicates,Row,我想知道如何删除两个不同列中的值不相同的行。下面是一个例子来说明我的问题: test.1 <- c("A", "B", "C", "D") test.2 <- c("2009-02", "2009-04", "2010-01", "2011-02") test.3 <- c("2009-02", "2009-08", "2010-01", "2013-06") test.data <- data.frame(test.1, test.2, test.3) 我想删除tes
test.1 <- c("A", "B", "C", "D")
test.2 <- c("2009-02", "2009-04", "2010-01", "2011-02")
test.3 <- c("2009-02", "2009-08", "2010-01", "2013-06")
test.data <- data.frame(test.1, test.2, test.3)
我想删除test.2和test.3不相等的行,即第二行和第四行。我尝试了复制函数,因为我发现
test.data.2 = test.data[!duplicated(test.data[,c('test.2', 'test.3')]),]
将删除test.2=test.3的行。因此,我删除“!”如下所示:
test.data.2 = test.data[duplicated(test.data[,c('test.2', 'test.3')]),]
但它不起作用。你还有其他建议吗?
非常感谢您的帮助我们可以使用
子集
对基本R
subset(test.data, test.2 == test.3)
或者使用
dplyr
library(dplyr)
test.data %>%
slice(which(test.2 == test.3))
我们可以使用
subset
对base R
subset(test.data, test.2 == test.3)
或者使用
dplyr
library(dplyr)
test.data %>%
slice(which(test.2 == test.3))
使用
tidyverse
:
library(tidyverse)
test.data %>%
filter(test.2 == test.3)
或基准R:
test.data[test.data$test.2 == test.data$test.3,]
使用
tidyverse
:
library(tidyverse)
test.data %>%
filter(test.2 == test.3)
或基准R:
test.data[test.data$test.2 == test.data$test.3,]
您可以创建一个新的数据框,其中只有
test.2
和test.3
中的值相同:
test.data.2 <- test.data[test.data$test.2 == test.data$test.3,]
test.data.2 <- test.data[-which(test.data$test.2 != test.data$test.3),]
test.data.2您可以创建一个新的数据框,其中只有test.2
和test.3
中的值相同:
test.data.2 <- test.data[test.data$test.2 == test.data$test.3,]
test.data.2 <- test.data[-which(test.data$test.2 != test.data$test.3),]
test.data.2