这是一些虚拟代码及其非常明显的输出:
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,以便我可以拉出所有具有真正价值的城市?
答案 0 :(得分:3)
这可以通过几种方式完成。一个选项是&
。仅当所有元素都为TRUE
时,它才会变为TRUE
。因此,如果我们使用xdupe & ydupe
,它会比较&#39; xdupe&#39;的相应元素。和&#39; ydupe&#39;只有当两个元素都是“真实”时才会获得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