Реплицируйте и добавляйте к фрейму данных в R - PullRequest
0 голосов
/ 20 июня 2019

Я считаю, что это довольно просто, хотя я новичок в использовании R и кода. У меня есть набор данных, который имеет одну строку для каждого места ловушки грызунов. Тем не менее, было 8 случаев отлова за 4 года. Что я хочу сделать, это расширить данные сайта ловушек и добавить число от 1 до 8 для каждой строки.

Затем я могу пометить их посещением ловушки для последующего объединения с полученными данными ловушки.

Мне удалось скопировать строки с помощью следующего кода. И хотя строки во фрейме данных расширены до 1, 1.1 ... 1.7,2, 2.1 ... 2.7 и т. Д., Я не могу понять, как преобразовать это в пригодный для использования идентификатор на основе столбца.

structure(list(TrapCode = c("IA1sA", "IA2sA", "IA3sA", "IA4sA", 
"IA5sA"), Y = c(-12.1355987315, -12.1356879776, -12.1357664998, 
-12.1358823313, -12.1359720852), X = c(-69.1335789865, -69.1335225279, 
-69.1334668485, -69.1333847769, -69.1333226532)), row.names = c(NA, 
5L), class = "data.frame")

gps_1 <– gps_1[rep(seq_len(nrow(gps_1)), 3), ]

дает

"IA5sA", "IA1sA", "IA2sA", "IA3sA", "IA4sA", "IA5sA", "IA1sA", 
"IA2sA", "IA3sA", "IA4sA", "IA5sA"), Y = c(-12.1355987315, -12.1356879776, 
-12.1357664998, -12.1358823313, -12.1359720852, -12.1355987315, 
-12.1356879776, -12.1357664998, -12.1358823313, -12.1359720852, 
-12.1355987315, -12.1356879776, -12.1357664998, -12.1358823313, 
-12.1359720852), X = c(-69.1335789865, -69.1335225279, -69.1334668485, 
-69.1333847769, -69.1333226532, -69.1335789865, -69.1335225279, 
-69.1334668485, -69.1333847769, -69.1333226532, -69.1335789865, 
-69.1335225279, -69.1334668485, -69.1333847769, -69.1333226532
)), row.names = c("1", "2", "3", "4", "5", "1.1", "2.1", "3.1", 
"4.1", "5.1", "1.2", "2.2", "3.2", "4.2", "5.2"), class = "data.frame")

У меня есть столбец с уникальным идентификатором Trap_ID. Я надеюсь, что после репликации я мог бы добавить к этому номер итерации, чтобы он оставался уникальным идентификатором.

Например:

Trap_ID
IA1sA.1
IA1sA.2
IA1sA.3
IA2sA.1
IA2sA.2
IA2sA.3

1 Ответ

1 голос
/ 20 июня 2019

Просто используйте перекрестное объединение (т. Е. Объединение без столбцов с , чтобы получить декартово произведение обоих наборов):

mdf <- merge(data.frame(Trap_ID = 1:8), trap_side_df, by=NULL)
...