On 06/13/2012 11:41 PM, Nympha Nymphaea wrote:
Dear R-helpers,

I'm stuck with a little problem that surely has an easy solution but I
can't think of a way to solve it. I'd really appreciate any help you can
offer me!

I'll provide a small example. Given a dataframe data.txt that looks like
this:

ID    freq    Var    Var_mean    Ratio_mean    Var_median
Ratio_median    Var_sum    Ratio_min    Var_max    Ratio_max    Var_min
Ratio_sum
134    5    2.140    0.447    4.784    0.272    7.881    2.237    0.957
0.833    2.568    0.187    11.437
30    4    1.743    0.450    3.873    0.358    4.869    1.799    0.968
0.915    1.904    0.169    10.329
137    4    1.401    0.304    4.614    0.310    4.514    1.215    1.153
0.480    2.921    0.114    12.268
9    3    0.065    0.023    2.849    0.021    3.108    0.069    0.950
0.030    2.137    0.017    3.799
35    3    0.192    0.067    2.849    0.025    7.756    0.202    0.950
0.153    1.258    0.025    7.756
95    3    1.365    0.360    3.792    0.335    4.073    1.080    1.264
0.484    2.820    0.261    5.237
120    3    5.171    1.891    2.735    0.542    9.532    5.672    0.912
4.970    1.040    0.160    32.408
123    3    0.721    0.226    3.182    0.155    4.661    0.679    1.061
0.372    1.939    0.153    4.704
133    3    3.242    0.918    3.531    0.921    3.519    2.754    1.177
1.551    2.090    0.282    11.512
136    3    1.058    0.371    2.850    0.337    3.141    1.113    0.950
0.449    2.358    0.328    3.225
140    3    5.935    1.877    3.162    0.327    18.167    5.630    1.054
5.114    1.160    0.189    31.332
141    3    0.974    0.325    2.997    0.160    6.092    0.975    0.999
0.661    1.473    0.154    6.330
147    3    3.207    0.798    4.018    0.951    3.373    2.394    1.339
1.148    2.793    0.296    10.840
2    2    3.859    2.020    1.911    2.020    1.911    4.039    0.955
3.714    1.039    0.326    11.851
8    2    0.017    0.009    1.900    0.009    1.900    0.018    0.950
0.014    1.266    0.005    3.799
10    2    0.096    0.060    1.603    0.060    1.603    0.120    0.802
0.060    1.599    0.060    1.607
26    2    7.308    0.504    14.500    0.504    14.500    1.008    7.250
0.813    8.990    0.195    37.459
46    2    9.070    7.542    1.203    7.542    1.203    15.085    0.601
7.576    1.197    7.509    1.208
49    2    9.485    5.035    1.884    5.035    1.884    10.070    0.942
9.406    1.008    0.664    14.289
63    2    21.308    13.956    1.527    13.956    1.527    27.912
0.763    14.148    1.506    13.764    1.548

And I need to calculate the mean of every column whose name starts with
Ratio_.
That is, I need to calculate the mean of the columns Ratio_mean (3.4882),
Ratio_median (5.2607), Ratio_sum (1.29985), Ratio_min (2.1533), Ratio_max
(11.1469).
But I would like to have the results just at once, in one column or one
after the other (and not to run the code for every single result).
I do have almost 200 columns that start with Ratio_, so doing it by hand
it's really burdensome...

I tried with a "for" loop:


for (x in 1:5) {
    x<- with(data, c(Ratio_mean, Ratio_median, Ratio_sum, Ratio_max,
Ratio_min))
    Mean<- with(data mean(x))
    print(Mean)
  }


But the result is:
[1] 4.66979
[1] 4.66979
[1] 4.66979
[1] 4.66979
[1] 4.66979

which is the mean of all the columns together. I would like to obtain the
mean of every column in each line:

[1] 3.4882
[1] 5.2607
[1] 1.29985
[1] 2.1533
[1] 11.1469


I think my problem is that I don't know how to assign correctly the
variable x. Does anyone know if that is possible or an alternative way to
get that result?

Hi Nympha,
Try this:

nn<-read.table("nn.dat",header=TRUE)
for(variable in grep("Ratio_",names(nn),fixed=TRUE))
 print(mean(nn[,variable]))

Jim

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to