如何匹配数据框中的两列逻辑向量
How to match two columns of logical vectors within a data frame
这是一些伪代码及其非常明显的输出:
xdupe <- as.logical(c("T", "F", "F", "F", "T", "T", "F"))
ydupe <- as.logical(c("T", "F", "F", "F", "F", "T", "T"))
cities <- c("Knox", "Whiteville", "Madison", "York", "Paris", "Corona", "Bakersfield")
df <- data.frame(cities, xdupe, ydupe)
df$cities <- as.character(df$cities)
> df
cities xdupe ydupe
1 Knox TRUE TRUE
2 Whiteville FALSE FALSE
3 Madison FALSE FALSE
4 York FALSE FALSE
5 Paris TRUE FALSE
6 Corona TRUE TRUE
7 Bakersfield FALSE TRUE
对于某些上下文,xdupe 和 ydupe 代表的是重复的 x 和 y 坐标(分别是经度和纬度)的逻辑值。
所以我需要做的是查看数据框中的哪些属性对于 xdupe 和 ydupe 具有 TRUE 值。在这种特殊情况下,这将是城市诺克斯和科罗纳。我如何比较 xdupe 和 y dupe 以便我可以提取所有具有两个真实值的城市?
这可以通过多种方式完成。一种选择是 &
。只有当所有的元素都是TRUE
时,它才会变成TRUE
。所以,如果我们使用xdupe & ydupe
,它会比较'xdupe'和'ydupe'对应的元素,只有当两个元素都是'TRUE'.[=19时才会得到TRUE
=]
i1 <- with(df, xdupe & ydupe)
或者另一种选择是 rowSums
仅包含逻辑列的数据集子集。由于 TRUE 的二进制表示为 1,FALSE 为 0,当每个对应元素都为 TRUE 时,结果为 2.
i1 <- rowSums(df[-1])==2
然后我们对数据集进行子集化
Subdf <- df[i1,]
Subdf
# cities xdupe ydupe
#1 Knox TRUE TRUE
#6 Corona TRUE TRUE
这是一些伪代码及其非常明显的输出:
xdupe <- as.logical(c("T", "F", "F", "F", "T", "T", "F"))
ydupe <- as.logical(c("T", "F", "F", "F", "F", "T", "T"))
cities <- c("Knox", "Whiteville", "Madison", "York", "Paris", "Corona", "Bakersfield")
df <- data.frame(cities, xdupe, ydupe)
df$cities <- as.character(df$cities)
> df
cities xdupe ydupe
1 Knox TRUE TRUE
2 Whiteville FALSE FALSE
3 Madison FALSE FALSE
4 York FALSE FALSE
5 Paris TRUE FALSE
6 Corona TRUE TRUE
7 Bakersfield FALSE TRUE
对于某些上下文,xdupe 和 ydupe 代表的是重复的 x 和 y 坐标(分别是经度和纬度)的逻辑值。
所以我需要做的是查看数据框中的哪些属性对于 xdupe 和 ydupe 具有 TRUE 值。在这种特殊情况下,这将是城市诺克斯和科罗纳。我如何比较 xdupe 和 y dupe 以便我可以提取所有具有两个真实值的城市?
这可以通过多种方式完成。一种选择是 &
。只有当所有的元素都是TRUE
时,它才会变成TRUE
。所以,如果我们使用xdupe & ydupe
,它会比较'xdupe'和'ydupe'对应的元素,只有当两个元素都是'TRUE'.[=19时才会得到TRUE
=]
i1 <- with(df, xdupe & ydupe)
或者另一种选择是 rowSums
仅包含逻辑列的数据集子集。由于 TRUE 的二进制表示为 1,FALSE 为 0,当每个对应元素都为 TRUE 时,结果为 2.
i1 <- rowSums(df[-1])==2
然后我们对数据集进行子集化
Subdf <- df[i1,]
Subdf
# cities xdupe ydupe
#1 Knox TRUE TRUE
#6 Corona TRUE TRUE