Как перебрать столбцы датафрейма в R и вывести квантили () для каждого столбца как строку в новом фрейме данных

Одна из самых коротких версий ES6 для реализации будет следующей:

state.List.forEach(listItem => finalArr.push([].concat([listItem.name], listItem.sub)));

Здесь мы перебираем массив List и нажимаем на finalArr новый массив, который мы генерируем путем слияния значений свойств объекта name и sub в один новый массив. И, наконец, у нас есть массив массивов (каждый дополнительный массив, созданный из отдельных элементов из state.List). Вот рабочий пример:

const state = {
    List: [
      {
        name: "josie", 
        sub: [
          "ally",
          "fred"
        ] 
      },
      {
        name: "edward", 
        sub: [
          "ally",
          "fred",
          "goolly"
        ] 
      }
    ]
}
const finalArr = [];
state.List.forEach(listItem => finalArr.push([].concat([listItem.name], listItem.sub)));
console.log(finalArr);

0
задан Mohammadreza Farahani 18 January 2019 в 23:07
поделиться

1 ответ

Воспроизводимые данные

df <- as.data.frame(matrix(rnorm(400), 100, 4))

Гистограмма и квантиль

Вы получите гистограмму и квантиль одновременно по коду ниже , Я использую mapply() вместо sapply(), потому что я хочу, чтобы заголовки гистограмм соответствовали названию каждого столбца. Если у вас нет запроса, вы можете изменить его.

par(mfrow = c(1, 4))
quant <- mapply(function(value, name){
  hist(value, main = paste0("Histogram of ", name), breaks = 20)
  quantile(value, seq(0, 1, by = 0.1))
}, df, names(df), SIMPLIFY = T)

quant

#               V1          V2          V3         V4
# 0%   -2.44712416 -2.63463290 -3.08872658 -2.8410463
# 10%  -0.88944226 -1.16264448 -1.24097984 -1.1701429
# 20%  -0.71782990 -0.91843217 -0.75868358 -0.8962623
# 30%  -0.51587838 -0.66932521 -0.52816811 -0.8046574
# ...

enter image description here

Обратите внимание, что вывод mapply() является матрицей. Если вы хотите, чтобы это был фрейм данных, попробуйте:

as.data.frame(quant)

Если вы хотите, чтобы квантиль был строкой, попробуйте:

as.data.frame(t(quant))
0
ответ дан Darren Tsai 18 January 2019 в 23:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: