编写函数以按行组合数据帧

时间:2018-06-21 06:21:16

标签: r

我需要一些有关家庭作业的帮助。我要求我提供一个可以获取数据帧的函数,并提供指定的每一列的均值,中位数和标准差,并对存在的“ NA”数进行计数。例如,

df1

 1. 12 15 16 17
 2. NA 24 18 NA
 3. 16 14 19 20

功能(df [3])

应返回数据框:

 1. mean med sd NA's
 2. 17.6 17.5 1.52 0  

到目前为止,该函数具有:

table1 <- function(dat){
  average <- mean(dat)
  med <- median(dat)
  standard_deviation <- sd(dat)
  x <-cbind(average, med, standard_deviation)
  x}

但是,似乎R一直在响应: “ mean(dat)中的错误:找不到对象'患者'” 有人可以指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

一种可能的解决方案是编写一个函数,该函数接受一个数据帧和一个列索引并返回所需的结果。

summ_col <- function(df, colindex = 1) {
  mean <- mean(df[[colindex]], na.rm = TRUE)
  median <- median(df[[colindex]], na.rm = TRUE)
  sd <- sd(df[[colindex]], na.rm = TRUE)
  nas <- sum(is.na((df[[colindex]])))
  return (data.frame(mean = mean, median = median, sd = sd, nas = nas))
}
df1 <- data.frame(x1 = c(12, NA, 16), x2 = c(15, 24, 14),
                  x3 = c(16, 18, 19), x4 = c(17, NA, 20))
summ_col(df1, 3)

请注意,您可以使用summ_col(df1[3]),因为df1[3]将创建一个仅由df1的第3列组成的新数据框,并且colindex的默认参数1确保其汇总相应的列。