【问题标题】:Statistics of 150 variables in data frame数据框中150个变量的统计
【发布时间】:2018-01-29 07:03:44
【问题描述】:

我有两个数据框,一个有 181 个 obs.和 521 个变量,另一个数据框有两个变量和 150 个 obs。第一个数据框是完整的数据,第二个是第一个数据框中的连续变量名称。我想计算连续变量的均值、方差、中位数和其他统计数据。例如:

df1:
    ha_be    me_cu    par_pri    fer_ex
      1      1000       300         5
      0      500        150         7
      0      300        400         5
      0      900         80         6
      1      2100        50         3
      1      3400        60         2
      0      390        800         1
      1      400        750         4

df_cont: 
      Cod    variable.names
      3.2     me_cu
      3.3     par_pri 

如何使用df_cont 中的名称从df1 中提取所有连续变量并计算所有基本统计信息?我正在尝试使用 for 循环,但无法正常工作。

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    你也可以这样做(只有当你拥有所有的连续音时):

    df1<-lapply(df1, as.numeric)
    mean<-vapply(df1, mean, na.rm=TRUE, numeric(1))
    median<-vapply(df1, median, na.rm=TRUE, numeric(1))
    des<-vapply(df1,sd,na.rm=T,numeric(1))
    var<-vapply(df1, var, na.rm=TRUE, numeric(1))
    maxi<-vapply(df1, max, na.rm=TRUE, numeric(1))
    min<-vapply(df1, min, na.rm=TRUE, numeric(1))
    
    cont<-data.frame(mean,median,des,var,max,min)
    

    【讨论】:

      【解决方案2】:

      我们可以使用select 将列保留在“df1”中,然后使用summarise_each 获取基本统计信息

      library(dplyr)
      df1 %>% 
           select_(.dots = df_cont$variable.names) %>% 
           summarise_each(funs(mean, sum)) #specify the functions
      

      如果 'variable.names' 是 factor,则将其转换为 character (select_(.dots = as.character(df_cont$variable.names)))

      除了在summarise_each中单独传递函数,我们还可以调用summary来获取minmaxmedianmean等。

      df1 %>% 
           select_(.dots = df_cont$variable.names) %>% 
           summary
      

      【讨论】:

        【解决方案3】:

        或者这个:

        summary.df <- as.data.frame(summary(df1[df_cont$variable.names]))[,2:3]
        names(summary.df) <- c('variable.name', 'stat')
        
           variable.name stat
        1          me_cu Min.   : 300.0  
        2          me_cu 1st Qu.: 397.5  
        3          me_cu Median : 700.0  
        4          me_cu Mean   :1123.8  
        5          me_cu 3rd Qu.:1275.0  
        6          me_cu Max.   :3400.0  
        7        par_pri  Min.   : 50.0  
        8        par_pri  1st Qu.: 75.0  
        9        par_pri  Median :225.0  
        10       par_pri  Mean   :323.8  
        11       par_pri  3rd Qu.:487.5  
        12       par_pri  Max.   :800.0  
        

        【讨论】:

        • 不知道列数怎么办?
        • 你不需要知道列号,2:3只是用来丢弃汇总数据框的第一列,没有用,与列号无关号码。
        猜你喜欢
        • 2021-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-22
        • 1970-01-01
        • 2018-05-21
        • 2021-05-17
        相关资源
        最近更新 更多