[R] "for" loop assistance -
Steven Ranney
steven.ranney at gmail.com
Fri Mar 25 18:36:57 CET 2011
All –
I have an example data frame
x lc1 id
43.38812035 85 ga1
47.55710661 85 ga1
47.55710661 85 ga2
47.55710661 85 ga2
51.99211429 85 ga3
51.99211429 85 ga3
51.99211429 95 ga1
54.78449958 95 ga1
54.78449958 95 ga2
54.78449958 95 ga2
56.70201864 95 ga3
56.70201864 95 ga3
56.70201864 105 ga1
59.66361903 105 ga1
59.66361903 105 ga2
61.69573564 105 ga2
61.69573564 105 ga3
61.69573564 105 ga3
63.77469479 115 ga1
63.77469479 115 ga1
64.83191994 115 ga2
64.83191994 115 ga2
64.83191994 115 ga3
66.98222118 115 ga3
66.98222118 125 ga1
66.98222118 125 ga1
66.98222118 125 ga2
66.98222118 125 ga2
66.98222118 125 ga3
66.98222118 125 ga3
and I’m trying to extract means for every lc1 and id level so that I
would have a data frame that looks like
x.m lc1 id
x.1 085 ga1
x.2 085 ga2
x.3 085 ga3
x.4 095 ga1
x.5 095 ga2
x.6 095 ga3
x.7 105 ga1
x.8 105 ga2
x.9 105 ga3
x.10 115 ga1
x.11 115 ga2
x.12 115 ga3
x.13 125 ga1
x.14 125 ga2
x.15 125 ga3
Now, I can use brute force to get the second data frame by
write.table(tapply(x[lc1=="085"], id[lc1=="085"], mean), "file.xls", sep=",")
write.table(tapply(x[lc1=="095"], id[lc1=="095"], mean), “file.xls",
sep=",", append=T)
write.table(tapply(x[lc1=="105"], id[lc1=="105"], mean), “file.xls",
sep=",", append=T)
etc…
and add the values for the lc1 column in the .xls file until I’ve
worked my way through every level for lc1 then read the file back into
R, but this would require a great deal of my time. (I have 72 levels
for lc1 and 346 levels for id totalling over 20,000 lines.)
I am confident that there is a simple, more elegant solution available
to me that I am overlooking. I am sure that I could use a “for” loop,
but as someone that is new to R programming, I am unsure of how to go
about creating the for loop to build the second data frame. I've
tried to modify existing for loops that I already have but have been
unsuccessful.
Do you have any suggestions?
Thank you –
Steven Ranney
More information about the R-help
mailing list