我有这样的功能:
remove_outliers<-function(x){
qnt<- quantile(x,probs=0.99)
y<- x
y[x>qnt]<- NA
y}
Run Code Online (Sandbox Code Playgroud)
目的是删除位于数据顶部1%的异常值(用NA替换它们的值).如何在因子变量的各个级别上应用此功能?
例如,
A组和B组的原始数据集:
group share
A 100
A 50
A 30
A 10
... ...
B 100
B 90
B 80
B 60
... ...
Run Code Online (Sandbox Code Playgroud)
应该像这样结束:
group share
A NA
A 50
A 30
A 10
... ...
B NA
B 90
B 80
B 60
... ...
Run Code Online (Sandbox Code Playgroud)
我已经试过了,但是这些都改变了数据集输出的结构.
如何根据指定的x值在每个图形中绘制水平线?例如,当我在x轴上有X = 1时,图上的匹配点是(1,y0),然后绘制一条水平线Y = y0?
使用虹膜数据的工作示例,只有x = 0.5的垂直线:
iris = read.table("http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data", sep=',', header=F)
names(iris) = c("sepal.length", "sepal.width", "petal.length", "petal.width", "iris.type")
xyplot(sepal.length ~ petal.width | iris.type, data = iris,
panel = function(...) {
panel.abline(v=0.5, lty = "dotted", col = "black")
panel.xyplot(...)
})
Run Code Online (Sandbox Code Playgroud)
但是我也希望以这种方式显示水平线:在iris-setosa图(面板)中看到,通过(0.5,y)处的点标记水平线 - 我手动绘制.我不知道如何在panel.abline中指定y,因为y是每个面板看起来不同的变量.
在我的实际数据中,我的x和y具有一对一的关系.
我认为这应该是一个简单的问题,但不知道如何解决这个问题.我希望这更清楚.

我正在使用 Postgresql 并且需要像这样查询两个表:
表格1
ID Bill
A 1
B 2
B 3
C 4
Run Code Online (Sandbox Code Playgroud)
表2
ID
A
B
Run Code Online (Sandbox Code Playgroud)
我想要一个包含表 1 中所有列的表,但只保留表 2 中可用 ID 的记录(在本例中为 A 和 B)。此外,Table2 的 ID 是唯一的。
ID Bill
A 1
B 2
B 3
Run Code Online (Sandbox Code Playgroud)
我应该使用哪个连接或者我是否可以使用 WHERE 语句?
谢谢!