你如何总结R中的每一行

时间:2014-03-19 15:34:53

标签: r

我有一个这样的数据框:

    structure(list(time = structure(c(1395069253, 1395069253), class = c("POSIXct", 
"POSIXt"), tzone = ""), V1 = c("DISKBUSY", "DISKBUSY1"), V2 = c("T0001", 
"T0001"), V3 = c(0, 0), V4 = c(0, 0), V5 = c(0, 0), V6 = c(0, 
0), V7 = c(0, 0), V8 = c(0, 0), V9 = c(0, 0), V10 = c(0, 1), 
    V11 = c(0, 0), V12 = c(0, 0), V13 = c(0, 0), V14 = c(0, 0
    ), V15 = c(0, 0), V16 = c(0, 0), V17 = c(0, 0), V18 = c(0, 
    0), V19 = c(0, 0), V20 = c(0, 0), V21 = c(0, 0), V22 = c(0, 
    0), V23 = c(0, 0), V24 = c(0, 0), V25 = c(0, 0), V26 = c(0, 
    0), V27 = c(0, 0), V28 = c(0, 0), V29 = c(0, 0), V30 = c(0, 
    0), V31 = c(0, 0), V32 = c(0, 0), V33 = c(0, 0), V34 = c(0, 
    0), V35 = c(0, 0), V36 = c(0, 0), V37 = c(0, 0), V38 = c(0, 
    0), V39 = c(0, 0), V40 = c(0, 0), V41 = c(0, 0), V42 = c(0, 
    0), V43 = c(0, 0), V44 = c(0, 0), V45 = c(0, 0), V46 = c(0, 
    0), V47 = c(0, 0), V48 = c(0, 0), V49 = c(0, 0), V50 = c(0, 
    0), V51 = c(0, 0), V52 = c(0, 0), V53 = c(0, 0), V54 = c(0, 
    0), V55 = c(0, 0), V56 = c(0, 0), V57 = c(0, 1), V58 = c(0, 
    0), V59 = c(0, 0), V60 = c(0, 0), V61 = c(0, 0), V62 = c(0, 
    0), V63 = c(0, 0), V64 = c(0, 0), V65 = c(0, 0), V66 = c(0, 
    0), V67 = c(0, 0), V68 = c(1, 0), V69 = c(0, 0), V70 = c(0, 
    0), V71 = c(0, 0), V72 = c(0, 0), V73 = c(1, 0), V74 = c(0, 
    0), V75 = c(0, 0), V76 = c(0, 0), V77 = c(0, 0), V78 = c(0, 
    0), V79 = c(0, 0), V80 = c(0, 0), V81 = c(0, 0), V82 = c(0, 
    0), V83 = c(0, 0), V84 = c(0, 0), V85 = c(0, 0), V86 = c(0, 
    0), V87 = c(0, 0), V88 = c(0, 0), V89 = c(0, 0), V90 = c(0, 
    0), V91 = c(0, 0), V92 = c(0, 0), V93 = c(0, 0), V94 = c(0, 
    0), V95 = c(0, 0), V96 = c(0, 0), V97 = c(0, 0), V98 = c(0, 
    0), V99 = c(0, 0), V100 = c(0, 0), V101 = c(0, 0), V102 = c(0, 
    1), V103 = c(0, 0), V104 = c(0, 0), V105 = c(0, 0), V106 = c(0, 
    1), V107 = c(0, 0), V108 = c(0, 0), V109 = c(0, 1), V110 = c(0, 
    0), V111 = c(0, 0), V112 = c(0, 0), V113 = c(0, 0), V114 = c(0, 
    0), V115 = c(0, 0), V116 = c(0, 0), V117 = c(0, 0), V118 = c(1, 
    0), V119 = c(0, 0), V120 = c(0, 0), V121 = c(0, 0), V122 = c(0, 
    0), V123 = c(0, 0), V124 = c(0, 0), V125 = c(0, 0), V126 = c(0, 
    0), V127 = c(0, 0), V128 = c(0, 0), V129 = c(0, 0), V130 = c(0, 
    1), V131 = c(0, 0), V132 = c(0, 0), V133 = c(0, 0), V134 = c(1, 
    0), V135 = c(0, 0), V136 = c(0, 0), V137 = c(0, 0), V138 = c(0, 
    0), V139 = c(0, 0), V140 = c(0, 0), V141 = c(0, 0), V142 = c(0, 
    0), V143 = c(0, 0), V144 = c(0, 0), V145 = c(0, 0), V146 = c(0, 
    0), V147 = c(0, 0), V148 = c(0, 0), V149 = c(0, 0), V150 = c(0, 
    0), V151 = c(0, 1), V152 = c(0, 0)), .Names = c("time", "V1", 
"V2", "V3", "V4", "V5", "V6", "V7", "V8", "V9", "V10", "V11", 
"V12", "V13", "V14", "V15", "V16", "V17", "V18", "V19", "V20", 
"V21", "V22", "V23", "V24", "V25", "V26", "V27", "V28", "V29", 
"V30", "V31", "V32", "V33", "V34", "V35", "V36", "V37", "V38", 
"V39", "V40", "V41", "V42", "V43", "V44", "V45", "V46", "V47", 
"V48", "V49", "V50", "V51", "V52", "V53", "V54", "V55", "V56", 
"V57", "V58", "V59", "V60", "V61", "V62", "V63", "V64", "V65", 
"V66", "V67", "V68", "V69", "V70", "V71", "V72", "V73", "V74", 
"V75", "V76", "V77", "V78", "V79", "V80", "V81", "V82", "V83", 
"V84", "V85", "V86", "V87", "V88", "V89", "V90", "V91", "V92", 
"V93", "V94", "V95", "V96", "V97", "V98", "V99", "V100", "V101", 
"V102", "V103", "V104", "V105", "V106", "V107", "V108", "V109", 
"V110", "V111", "V112", "V113", "V114", "V115", "V116", "V117", 
"V118", "V119", "V120", "V121", "V122", "V123", "V124", "V125", 
"V126", "V127", "V128", "V129", "V130", "V131", "V132", "V133", 
"V134", "V135", "V136", "V137", "V138", "V139", "V140", "V141", 
"V142", "V143", "V144", "V145", "V146", "V147", "V148", "V149", 
"V150", "V151", "V152"), row.names = c("1.1", "1.2"), class = "data.frame")

我需要总结第4列到最后一列的每一行。我需要能够获得每行的平均值,总和等,并省略NA值。

我在R

中如何做到这一点的任何想法

3 个答案:

答案 0 :(得分:1)

您可以在此处使用apply(有关详细信息,请参阅?apply),例如:

apply(df, 1, function(x)summary(as.numeric(x[4:ncol(df)])))
#            1.1     1.2
#Min.    0.00000 0.00000
#1st Qu. 0.00000 0.00000
#Median  0.00000 0.00000
#Mean    0.02667 0.04667
#3rd Qu. 0.00000 0.00000
#Max.    1.00000 1.00000

答案 1 :(得分:1)

这是一个选项:

funs.to.apply <- list(mean=mean, sum=sum, median=median)
cbind(
  df[1:3], 
  t(
    apply(
      df[4:length(df)], 1, 
      function(x) vapply(funs.to.apply, function(y) y(x, na.rm=T), 1)
) ) )

产生

                   time        V1    V2       mean sum median
1.1 2014-03-17 11:14:13  DISKBUSY T0001 0.02666667   4      0
1.2 2014-03-17 11:14:13 DISKBUSY1 T0001 0.04666667   7      0

答案 2 :(得分:0)

你可以尝试

apply(df[ ,4:ncol(mydat)], 1, summary)

您可以使用任何功能而不是摘要。

希望它有所帮助。