根据我的数据(见下文),我使用 几个 "长度" +"其中"陈述(见下文)以探索我的数据。
Q1。是否有一个高效的代码自动化而不是使用这么多行代码?
Q2。我可以总结所有"长度"的答案。 +"其中"表格中的陈述? (例如,对于第一个 "长度" +"其中"声明,其中答案为 9,一张桌子可以说"第一象限" ,旁边或下面 9 )?
这是我的数据和"长度" +"其中"我创建的陈述:
x <- c(2,1,5,4,5,8,6,6,4,1,2,2,2,5,9,5,4,3,2,3,1,3,1,7,3,2,2,9,7,7,9,8,8,6,4,6,7,2,1,4,3,9)
y <- c(1,2,2,8,7,4,6,7,5,5,2,9,3,9,1,5,7,1,8,6,8,4,9,2,7,5,7,6,3,8,3,3,7,8,3,4,4,4,3,6,5,4)
## HERE is my "length" + "which" statements:
length(x[which(x < 5 & y <5)]) ## 1st quadrant datapoints (Left Bottom)
length(x[which(x < 5 & y >5)]) ## 2rd quadrant "
length(x[which(x > 5 & y >5)]) ## 3rd quadrant "
length(x[which(x > 5 & y <5)]) ## 4rd quadrant datapoints (Right Bottom)
length(x[which(x < 5)]) ## 1st left half
length(x[which(x > 5)]) ## 2nd right half
length(x[which(y < 5)]) ## 1st Bottom half
length(x[which(y > 5)]) ## 2nd Top half
length(x[which(x==5)]) ## Balanced Scope
length(x[which(y==5)]) ## Balanced Technicality
length(x[which(x==5 & y==5)]) ## Equal Scope and Technicality
length(x[which(y==5)]) ## How many of Xs have a Y of 5
length(y[which(x==5)]) ## How many of Ys have a X of 5
答案 0 :(得分:1)
如果你想用你自己的描述创建一个漂亮的表,那么最好的方法就是用“很多”行来做。
names=c("1st quadrant", "2rd quadrant", "3rd quadrant", "...")
numbers=c(length(x[x < 5 & y <5]), length(x[x < 5 & y >5]), length(x[x > 5 & y >5]), 12345)
new_table=data.frame(names,numbers)
答案 1 :(得分:1)
首先,我要注意length(x[which(logical_vector)])
只是sum(logical_vector)
,如果此向量的长度不超过x
的长度(在您的情况下,总是长度相同。)
但我会提出一个不同的方法,而不是总结逻辑向量。 x和y表示平面中点的坐标,因此将它们绑定到一个数据帧中是很自然的,如下所示:
d <- data.frame(x, y)
关于x和y的真正重要的是(x - 5)
和(y - 5)
表达式的标志(我将进一步说明)。我们来计算它们。
library(dplyr)
d <- mutate(d, sx = sign(x - 5), sy = sign(y - 5))
head(d)
x y sx sy
1 2 1 -1 -1
2 1 2 -1 -1
3 5 2 0 -1
4 4 8 -1 1
5 5 7 0 1
6 8 4 1 -1
所以,解释一下:有sx = -1
和sy = -1
这意味着对于这一点x < 5
和y < 5
,我们可以确定只知道sx
和sy
的象限。< / p>
现在我们需要创建一种字典,它可以通过sx
和sy
告诉我们象限是什么。这很简单:
library(tibble)
quadrant <- tribble(
~sx, ~sy, ~quadrant,
-1, -1, 1,
-1, 1, 2,
1, 1, 3,
1, -1, 4
)
然后我们可以简单地将d
与其合并以获取quadrant
变量(某些点会有NAs,但这不是问题):
d <- merge(d, quadrant, all.x = T)
最后,要通过象限来获取摘要
count(d, quadrant)
# A tibble: 5 × 2
quadrant n
<dbl> <int>
1 1 9
2 2 10
3 3 6
4 4 9
5 NA 8