【问题标题】:Write a function to output min, average, and max given input of values for multiple columns in R编写一个函数以输出 R 中多列的给定输入值的最小值、平均值和最大值
【发布时间】:2020-01-10 18:51:12
【问题描述】:

我有 3 个变量(A、B 和 C),每个变量包含 10 个值(每行 1 个值),我想为每个变量创建一个范围(输出)或三列。基本上给定 A、B 和 C 的 10 个值,我想自动化一个输出,为我提供 R 中每个变量的最小值、平均值和最大值。我正在考虑使用一个函数,我的输入是三个变量.

我使用了 excel,但一旦获得更多数据,我将无法输出这些值。我使用条件语句并手动输入值 - 我想创建三个新列,对应于每个变量的每个范围(Min、Avg 和 Max)。

#Create a DataFrame
## Random Matrix - Three Variables - 50 rows ##
trial <- matrix(sample(100, replace = TRUE), ncol=3)
colnames(trial) <- c('MFP', 'ECU', 'HMU')
trial.table <- as.table(trial)
trial <- as.data.frame(trial)

## Creating Min, Average, and Max range for each Column ##


# setting blank vector to fill #
# Create new double vector: output
df2 <- data.frame(matrix("", ncol = 3, nrow = 1)) 
colnames(df2) <- c('Min_thresh', 'Average', 'Max')


# Alter the loop
for (i in trial$MFP) {
  # Change code to store result in output
  df2$Min_thresh <- min(trial$MFP)
  df2$Max <- max(trial$MFP)
  df2$Average <- mean(trial$MFP)
}

# Print output
df2

预期输出将是添加到空白 df 的三列,其中显示从每列中提取的最小值、平均值和最大值:

df3 <- data.frame(matrix("", ncol = 3, nrow = 1)) 

df3$min <- min#
df3$average <- avg#
df3$max <- max #

然后,我将根据 Min、min 到 avg 的范围,然后是 Max 值来填充每一列...其中 Avg 是 Avg 和 min 之间的差值(例如,10 是 Min,16 是 Avg 的范围.).

【问题讨论】:

  • 这和 R 有什么关系?
  • 显示你的预期输出?
  • 可能先创建函数,当出现错误时再提问。
  • 我包括了 R 以防万一它在那里更容易做到。我会更新输出。
  • 我在 R 中编辑了评论/问题,使其更加清晰(不再使用 Python)

标签: r function output


【解决方案1】:

在基础 R 中,

t(sapply(trial, function(x) list(min = min(x), avg = mean(x), max = max(x))))

(请注意,结果是matrix,其中您的原始列名作为行名。)

如果你喜欢管道:

library(dplyr)
library(reshape2)
trial %>% 
  melt %>%
  group_by(variable) %>% 
  summarize(min = min(value), avg = mean(value), max = max(value))

(结果是一个 4 列数据框,在第一列中给出原始变量。)

【讨论】:

    猜你喜欢
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    相关资源
    最近更新 更多