У меня есть фрейм данных, в котором несколько столбцов содержат аналогичную информацию, которую я бы хотел свернуть на меньшее количество столбцов. Это выглядело немного отличным от обычного использования pivot_long или gather, и я застрял. Моя первая мысль заключалась в том, чтобы сделать 3 отдельных набора и привязку строк ... но я думаю, что у кого-то здесь будет более элегантное решение!
df<-data.frame("PicID"=letters[1:8],
"Near_Species1" = c("bird","bird", "bird", "dog", "dog", "human", "none", "human"),
"Count1" = c(1,1,1,1,2,1,0,1),
"Near_Species2" = c(NA,"human", NA, NA, "human", NA, NA, NA),
"Count2" = c(NA,1, NA, NA, 1, NA, NA, NA),
"Far_Species"=c(NA, NA, NA,NA, NA, NA, NA, "bird"))
Я бы хотел изменить это подольше с помощью basi c структура
PicID NearorFar Species Count
Я хотел бы иметь хотя бы 1 строку на изображение на основе Near_Species1, независимо от того, что там есть (нет, NA, et c).
И если в Near_Species2, Count2 ИЛИ Far_Species есть другие виды, кроме "none", я бы хотел еще одну строку. По сути, «нет» для видов - это NA. Но я бы хотел, чтобы хотя бы одна строка отслеживала этот идентификатор.
вывод будет выглядеть так, но удалите строки, в которых разновидность является NA.
df_out <- data.frame(
"PicID" = c("a", "b", "c", "d", "e", "f", "g", "h",
"a", "b", "c", "d", "e", "f", "g", "h",
"a", "b", "c", "d", "e", "f", "g", "h"),
"NearorFar"=rep(c("Near", "Far"),times=c(16, 8)),
"Species"= paste(c("bird","bird", "bird", "dog", "dog", "human", "none", "human",
NA,"human", NA, NA, "human", NA, NA, NA,
NA, NA, NA,NA, NA, NA, NA, "bird")),
"Count"= c(1,1,1,1,2,1,0,1,
NA,1, NA, NA, 1, NA, NA, NA,
rep(NA, 8))
)