2013-09-09 2 views
0

У меня есть dataframe, который выглядит несколько, как следующее:выберите строки, которые различаются только в одном столбце - R

v1 v2 v3 v4 v5 v6 
r1 1 2 2 4 5 9 
r2 1 2 2 4 5 10 
r3 2 2 2 4 5 9 
r4 2 2 2 4 5 10 

Я хотел бы, чтобы выбрать строки r1 и r3, основанные на том, что они отличаются по своим значениям в v1. Числа в этом столбце варьируются от 1 до 100. Возможно ли это, и если да, то как?

Любая помощь очень ценится, спасибо!

Update:

Некоторые уточнения: Значения в v1 случайные семена, которые идут от 1 до 100. В принципе, я бегу (в NetLogo) имитацию, которая проходит через все конфигурации параметров (v2 - v6) с 100 разные случайные семена. Теперь я хотел бы выбрать все строки, относящиеся к одной и той же конфигурации параметров, то есть если v2 = 2 и v3 = 5, введите мне все строки, которые соответствуют этому условию и имеют разные значения в v1/случайных семенах. Но поскольку у меня довольно много конфигураций параметров, я хотел бы сделать это в общем, так что мне не нужно писать их вручную. Следовательно, возникает вопрос, можно ли выбирать строки, которые одинаковы в нескольких столбцах, но отличаются в одном конкретном столбце.

+0

Извините, но ваши условия для выбора строк очень расплывчаты. Можете ли вы быть более конкретным? Вы просто ищете 'duplicated',' unique' или одну из этих связанных функций. – A5C1D2H2I1M1N2O1R2T1

+0

Выполнено, надеюсь, что это поможет :) – LukasKawerau

+0

Итак, вы игнорируете тот факт, что в столбце 'v6' есть разные значения? –

ответ

1

Это один из способов использования plyr, чтобы разделить данные.frame на куски. Каждый кусок состоит из тех, которые имеют одинаковые значения в первом столбце. Мы просто возвращаем первую строку из каждого фрагмента. Например:

# Here function(x) x[1,] - mean return the first row from each piece 
ddply(df , .variables = "v1" , .fun = function(x) x[1,]) 
# v1 v2 v3 v4 v5 v6 
#1 1 2 2 4 5 9 
#2 2 2 2 4 5 9 
+0

удивительный, спасибо! – LukasKawerau

+0

@LukasKawerau вы очень желанны - рад, что это помогло! –

+0

Есть ли способ сделать это просто получить строки с наибольшим числом в другой переменной? Поэтому, если v6 имеет значения 4, 5, 6, 10 для одного и того же значения v1, я получаю только строку, где v6 = 10? – LukasKawerau