Он хотел смочь сочетать стоимость, которые есть в колоннах Oak
, Wasteland
, Edge
и Crop
тех Taxa
что равны, такого dataframe как этот:
View(Datos)
Taxa Oak Wasteland Edge Crop
Allium 0 0 15.9 0
Allium 0 0 0 10.8
Cucumis 0 0 15.9 0
Cucumis 0 12.4 0 0
Zea_mays 0 12.4 0 0
Quercus_ilex 6.5 0 0 0
Quercus_coccifera 0 12.4 0 0
Taxa Oak Wasteland Edge Crop
Allium 0 0 15.9 10.8
Cucumis 0 12.4 15.9 0
Zea_mays 0 12.4 0 0
Quercus_ilex 6.5 0 0 0
Quercus_coccifera 0 12.4 0 0
С какой функцией он мог бы снимать дубликаты и как?
Существуют несколько форм:
Datos[!duplicated(Datos)]
Или используя ее funciГіn unique
unique(Datos)
Или устанавливая ее librerГ - в dplyr
# Instalación
install.packages("dplyr")
# Carga
library("dplyr")
# Función
distinct(Datos)
, Чтобы группировать колонны из-за operaciГіn (sum, max, они мочатся...)
aggregate(cbind(Datos$Oak,Datos$Wasteland,Datos$Edge,Datos$Crop), by = list(Datos$Taxa), max)
или
aggregate(cbind(Oak,Wasteland,Edge,Crop) ~ Taxa, data = Datos, max)
или
aggregate(Datos[,2:5],by=list(Datos$Taxa), max)
или с dplyr
require(dplyr)
Datos %>% group_by(Taxa) %>% summarise_each(funs(max))
или с data.table
library(data.table)
DT <- data.table(Datos)
DT[, lapply(.SD, max), by=Taxa]
SegГєn твой пример, в случае Allium
ты считаешь два реестра слегка отличными (в действительности они не удвоены), и из-за результата, который ты ждешь, казалось, что ты нуждаешься в группировании с нею funciГіn max
.
txt <- "Taxa Oak Wasteland Edge Crop
Allium 0 0 15.9 0
Allium 0 0 15.9 10.8
Cucumis 0 12.4 15.9 0
Cucumis 0 12.4 0 0
Zea_mays 0 12.4 0 0
Quercus_ilex 6.5 0 0 0
Quercus_ilex 6.5 0 0 0
Quercus_coccifera 6.5 12.4 0 0"
aggregate(cbind(Oak,Wasteland,Edge,Crop) ~ Taxa, df, max)
Вывод:
Taxa Oak Wasteland Edge Crop
1 Allium 0.0 0.0 15.9 10.8
2 Cucumis 0.0 12.4 15.9 0.0
3 Quercus_coccifera 6.5 12.4 0.0 0.0
4 Quercus_ilex 6.5 0.0 0.0 0.0
5 Zea_mays 0.0 12.4 0.0 0.0
aggregate()
мы делаем группирование используя синтаксис aggregate(formula, data, funcion)
cbind
создаем колонны, группируемые для каждых Taxa
data
был действительно data.frame
clá sico, funció n aggregate
требует, чтобы он это был, а пробует castearlo раньше посредством as.data.frame(data)
– Patricio Moracho
08.01.2018, 19:02