2014-10-31 7 views
1

Я пытаюсь выполнить повторную выборку элементов кадра данных. Я открыт для использования других структур данных, если это рекомендовано, но мое понимание, что DF будет лучше для объединения строк, чисел и т.д.Элементы выборки в кадре данных

Допустим, мой вход эти данные кадр:

16 x y z 2 
11 a b c 1 
......... 

И я хотел бы построить в качестве вывода другой структуру данных (я беру, другой ФР), как это:

16 x y z 
16 x y z 
11 a b c 
......... 

Я предполагаю, что моя основная проблема является способом добавить содержание, которое находится на колонки ЦФ [1, : 4].

Заранее спасибо, стр.

ответ

3

Неясно из вашего описания, но ваш желаемый результат означает, что вы хотите, чтобы дублировать столбцы 1:4 в соответствии с колонкой 5, это должно сделать работу

df[rep(seq_len(nrow(df)), df[, 5]), -5] 
#  V1 V2 V3 V4 
# 1 16 x y z 
# 1.1 16 x y z 
# 2 11 a b c 
+0

Да, эта умная комбинация сделала трюк. Это также можно сделать менее элегантным способом с циклом for. спасибо – user3310782

0

Если вы хотите попробовать с заменой n строки из кадра df данных:

df[sample(nrow(df), n, replace=TRUE), ]

2

Предполагая, что вы начинаете что-то вроде:

mydf 
# V1 V2 V3 V4 V5 
# 1 16 x y z 2 
# 2 11 a b c 1 

Затем, вы можете просто использовать expandRows из моего пакета «splitstackshape», как это:

library(splitstackshape) 
expandRows(mydf, count = "V5") 
#  V1 V2 V3 V4 
# 1 16 x y z 
# 1.1 16 x y z 
# 2 11 a b c 

По умолчанию функция предполагает, что вы расширяете свой набор данных на основе существующего , но вы можете просто добавить числовой вектор в качестве аргумента count и установить count.is.col = FALSE.

+0

Whaaat, это приятно –

+0

@RichardScriven, это, по сути, ответ Дэвида с несколькими другими колокольчиками ... Может быть, мне нужно CW ... – A5C1D2H2I1M1N2O1R2T1

+0

Я вижу это сейчас. Просто прочитав источник –

Смежные вопросы