条件列创建

时间:2009-12-20 02:03:12

标签: r

我有一个包含两列的数据框(数据并不总是相同)。

1 1 
2 2 
3 3 
0 0 
-1 -1 
-2 -2 
-3 -3

我想要做的是为列的前10%和列的底部10%创建另一列,以用作散点图的标签。

1 1 
2 2 
3 3 1
0 0 
-1 -1  
-2 -2 
-3 -3 2

此外,它需要能够从顶部/底部10%的任一列中选择和标记

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

你的问题有点含糊不清。什么“jpeg输出中使用的规模”。意思?两列是否始终相同?也许您正在寻找以下内容:

> dat<-data.frame(a=c(-(1:3),0:3))
> low<-quantile(dat$a,.1)
> high<-quantile(dat$a,.9)
> dat$flag<-NA
> dat$flag[dat$a<=low]<-1
> dat$flag[dat$a>high]<-2
> dat
   a flag
1 -1   NA
2 -2   NA
3 -3    1
4  0   NA
5  1   NA
6  2   NA
7  3    2

答案 1 :(得分:2)

感谢你回复Ian,我意识到这个问题本身并不是很好,但是我很难解释我想要的东西。在你的帮助下,我已经把它放在一起了:

top <- subset(data, data$column > quantile(data$column, 0.85))    
bottom <- subset(data, data$column < quantile(data$column, 0.15))
listing <- rbind(top,bottom)
label <- 1:nrow(listing)
listing[sort.list(listing$Distance, decreasing=T),]