Я пытаюсь написать функцию в R, которая объединяет столбцы видов вместе в data.frame.Использование функции для добавления столбца в R data.frame
(Чтобы немного рассказать о том, что я делаю ... У меня есть кадр данных с несколькими видами растений для нескольких сайтов и лет. Некоторые из видов были ошибочно идентифицированы, поэтому я хотел бы сгруппировать в более общий уровень (например, spp a и spp b были замешаны на протяжении многих лет, поэтому я хотел бы создать новый столбец spp.ab, в котором данные для spp a и b сгруппированы вместе)).
Пример:
spp.a spp.b
1 0
2 3
0 4
3 2
4 5
Я хотел бы в конечном итоге с одного столбца, который отображает максимум от значения из двух видов:
spp.ab
1
3
4
3
5
Я начал писать функцию который делает это; тем не менее, я беспокоюсь о добавлении нового столбца в свой набор данных и опускании старых. Может ли кто-нибудь сказать мне, что не так с моим кодом?
lump <- function(db, spp.list, new.spp) { #input spp.list as c('spp.a', 'spp.b', ...)
mini.db <- subset(db, select=spp.list);
newcol <- as.vector(apply(mini.db, 1, max, na.rm=T));
db$new.spp <- newcol
db <- db[,names(db) %in% spp.list]
return(db)
}
Когда я называю эту функцию в качестве такой
test <- lump(db, c('spp.a', 'spp.b'), spp.ab)
test
все, что всплывает является mini.db. Я что-то теряю с возвратом()?
Для справки, db - это база данных, spp.list - это вид, который я хочу объединить вместе, а new.spp - это то, что я хотел бы назвать новым столбцом.
Спасибо за любую помощь,
Пол
Итак, 'new.spp' - это имя нового столбца? –
Правильно, и вы можете называть его любым, как хотите, поместив имя в кавычки в качестве аргумента функции. Например, если вы хотите называть его el.conquistador, вы должны ввести lump (db, c ('spp.a', 'spp.b'), 'el.conquistador') – logicForPresident