2016-12-06 61 views
0

我有一个数据框中有15000条目的2列。R一列中哪些项目高于另一列?

col1 col2 
mike anna 
eve charly 
george mike 
jenn george 

我想知道,Col1中的哪些条目比Col2中的条目要高。

我已经有一个解决方案,我环通在Col1中的每个条目,并检查它在col2的位置,但15.000的需要年龄:

for(i in 1:nrow(df)){ 
    myposinCol2 <- grep(df[i,1], df[,2]) 
    if(myposinCol2[1] > (i + 500)){ #take it } 
} 

可能有人点我的方向,以改善呢?

THX 约尔格

+0

'which(df [,1] ==“george”)'? –

+2

你的问题不明确;我想你的意思是你想比较col1和col2中每个名字的等级。 – scoa

+0

预期结果是什么?两列共用的单个名称的值/等级? –

回答

0

这里是一个dplyr溶液来计算col1和COL2每个名称的秩之间的距离。

library(dplyr) 
library(tidyr) 
add_rownames(d) %>% 
    gather(key, name, -rowname) %>% 
    group_by(name) %>% 
    arrange(key) %>% 
    summarise(diff=as.numeric(first(rowname)) - as.numeric(last(rowname))) 

然后,如果你只想要这500名行列后出现​​在COL2名称:

%>% filter(diff < -500) 
1

其实,这是很简单的 - 如果这是你在找什么:

df[which(df$col1 + 500 == df$col2),] 

希望这有助于!

+0

你在这里干什么? 'df $ col1'是一个'character'列,它并不真正允许向它添加'500'。 –

+0

我知道,但正如问题中所见user987875想要得到符合以下条件的行: if(myposinCol2 [1]>(i + 500)){#take it} –

相关问题