Переформатирование вывода colMeans, так что это два столбца - PullRequest
1 голос
/ 24 сентября 2019

У меня есть фрейм данных, в котором я создал дополнительные 50 переменных, и я хочу дважды проверить данные, взяв средства из первых 10 строк и сравнить их со средствами из 10 строк в Excel.Выходные данные не просто вставляются в Excel, как в строки, а затем с 50 переменными это просто строка имен переменных, а затем ряд чисел, а затем повторяется для нескольких строк.

Я хотел быполучить вывод в 2 столбца, varname и затем среднее.Так что я могу просто вырезать и вставить в Excel, чтобы убедиться, что числа соответствуют переменным были созданы правильно.

fans <- data.frame(
  population = c(1234, 5678, 2345, 6789, 3456, 7890,
                4567, 8901, 5678, 9012, 6789),
  bears = c(123, 234, 345, 456, 567,678, 789, 890, 901, 135, 246),
  average = c(0.123, 0.234, 0.345, 0.456, 0.567, 0.678, 0.789, 0.890, 0.901, 
              0.135, 0.246),
  packersfa = c(11,22,33,44,55,66,77,88,99,100,122),
  vikingsf = c(39, 49, 59, 61, 32, 22, 31, 92, 52, 10, 122))

print(fans)

y<-colMeans(Filter(is.numeric,fans))
format(y, scientific = FALSE)

population          bears        average      packersfa       vikingsf 
"5667.1818182" " 487.6363636" "   0.4876364" "  65.1818182" "  51.7272727" 

Имейте в виду, что приведенная выше строка на самом деле много строк с var на одной строке ицифры на следующей строке.

Ответы [ 2 ]

0 голосов
/ 24 сентября 2019

Вы можете получить это просто, превратив средства столбца в data.frame.

data.frame(colMeans(Filter(is.numeric,fans)))
population                       5667.1818182
bears                             487.6363636
average                             0.4876364
packersfa                          65.1818182
vikingsf                           51.7272727
0 голосов
/ 24 сентября 2019

Если нам нужны два столбца, используйте stack как format ted 'y' или без формата, colMeans возвращает именованное vector

stack(format(y, scientific = FALSE))[2:1]
#    ind       values
#1 population 5667.1818182
#2      bears  487.6363636
#3    average    0.4876364
#4  packersfa   65.1818182
#5   vikingsf   51.7272727

с tibble, enframe это еще один вариант

library(tibble)
format(y, scientific = FALSE) %>%
   enframe
...