Я хотел бы усреднить данные из столбцов с тем же шаблоном имени.Некоторые из этих примеров прекрасно работают, если у вас есть только числовые данные:
Как рассчитать среднее значение для этих столбцов во фрейме данных с тем же именем столбца
Однако,У меня также есть столбец, который является фактором.Я могу удалить этот столбец, затем c (bind), чтобы вернуть его, но это кажется неуклюжим.Есть ли способ, которым я могу использовать что-то вроде !is.factor(x)
, чтобы игнорировать другой мой столбец?
df <-
as.data.frame(matrix(c(1,3,3,2,2,5,3,2,3,6,3,2,4,7,3,2,5,4,5,2,6,3,5,2),
ncol=6,
dimnames=list(NULL, c("A.1", "B.1", "C.1", "B.2", "A.2", "C.2"))))
char = c("Apple", "banana", "cat", "rainbow")
df = cbind(char, df)
res <- as.data.frame(sapply(unique(names(df)), function(col)
rowMeans(df[names(df) == col] )))
Ожидаемые результаты: res
char A B C
Apple 3.0 3 4.5
banana 3.5 6 4.5
cat 4.0 3 4.0
rainbow 2.0 2 2.0
Ошибка:
` Error in rowMeans(df[names(df) == col]) : 'x' must be numeric `