Eric McKibben wrote:
Hi.
I am very new to R and have been diligently working my way through the manual
and various tutorials. I am now trying to work with some of my own data and
have encountered a problem that I need to fix. I have a dataframe with 8
columns and approximately 850 rows. I have provided an excerpt of the
dataframe below. Within column 6 (Question) the numbers 1:33 repeat down the
entire column. Occasionally, however, another value (-32767) appears. I need
to locate this value everytime it appears and in its place insert 33 rows that
are numbered 1:33 in column Question. Additionally, I need to maintain the
integrity of the other columns so that the values at that location in each
column are also repeated 33 times. So, in the example below, I currently have
68 rows of data, but I actually need 132 rows (two -32767 values need to be
replaced). Based on my reading I am guessing that I need to use a while loop,
but I cannot seem to get it right. Is this the appropriate function!
or is there another more efficient method for achieving my goal. Again, I am quite new to R. Thanks for your help!
Year Month Day Time PartID Question Latency Response
2008 2 7 194556 6 1 265 -1
2008 2 7 194556 6 2 466 84
2008 2 7 194556 6 3 199 68
2008 2 7 194556 6 4 152 83
2008 2 7 194556 6 5 177 100
2008 2 7 194556 6 6 177 61
2008 2 7 194556 6 7 400 43
2008 2 7 194556 6 8 225 88
2008 2 7 194556 6 9 249 32
2008 2 7 194556 6 10 172 8
2008 2 7 194556 6 11 163 17
2008 2 7 194556 6 12 326 70
2008 2 7 194556 6 13 232 26
2008 2 7 194556 6 14 157 22
2008 2 7 194556 6 15 135 -1
2008 2 7 194556 6 16 133 2
2008 2 7 194556 6 17 222 2
2008 2 7 194556 6 18 357 4
2008 2 7 194556 6 19 131 -1
2008 2 7 194556 6 20 222 90
2008 2 7 194556 6 21 230 35
2008 2 7 194556 6 22 374 32
2008 2 7 194556 6 23 275 85
2008 2 7 194556 6 24 141 -1
2008 2 7 194556 6 25 264 19
2008 2 7 194556 6 26 380 17
2008 2 7 194556 6 27 240 21
2008 2 7 194556 6 28 127 -1
2008 2 7 194556 6 29 232 92
2008 2 7 194556 6 30 205 95
2008 2 7 194556 6 31 185 96
2008 2 7 194556 6 32 319 61
2008 2 7 194556 6 33 101 -1
2008 2 8 122203 6 -32767 0 NA
2008 2 7 194556 6 1 265 -1
2008 2 7 194556 6 2 466 84
2008 2 7 194556 6 3 199 68
2008 2 7 194556 6 4 152 83
2008 2 7 194556 6 5 177 100
2008 2 7 194556 6 6 177 61
2008 2 7 194556 6 7 400 43
2008 2 7 194556 6 8 225 88
2008 2 7 194556 6 9 249 32
2008 2 7 194556 6 10 172 8
2008 2 7 194556 6 11 163 17
2008 2 7 194556 6 12 326 70
2008 2 7 194556 6 13 232 26
2008 2 7 194556 6 14 157 22
2008 2 7 194556 6 15 135 -1
2008 2 7 194556 6 16 133 2
2008 2 7 194556 6 17 222 2
2008 2 7 194556 6 18 357 4
2008 2 7 194556 6 19 131 -1
2008 2 7 194556 6 20 222 90
2008 2 7 194556 6 21 230 35
2008 2 7 194556 6 22 374 32
2008 2 7 194556 6 23 275 85
2008 2 7 194556 6 24 141 -1
2008 2 7 194556 6 25 264 19
2008 2 7 194556 6 26 380 17
2008 2 7 194556 6 27 240 21
2008 2 7 194556 6 28 127 -1
2008 2 7 194556 6 29 232 92
2008 2 7 194556 6 30 205 95
2008 2 7 194556 6 31 185 96
2008 2 7 194556 6 32 319 61
2008 2 7 194556 6 33 101 -1
2008 2 8 143056 6 -32767 0 NA
Eric S McKibben
Industrial-Organizational Psychology Graduate Student
Clemson University
Clemson, SC
[[alternative HTML version deleted]]
______________________________________________
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.
Hi Eric,
Using a /while/ statement would probably work, but it would imply not
making use of R's convenient indexing aspect. What I suggest is the
following (my.data is the data.frame you provided) :
## To locate the rows ;
row.pos = which(my.data$Question==-32767) ;
repeat.index = rep(row.pos, 33) ;
## To output the result data.frame ;
index.vector = sort(c(seq_along(my.data$Question)[my.data$Question !=
-32767], repeat.index)) ;
final.result = my.data[index.vector,] ;
This should do the trick.
Cheers,
--
*Luc Villandré*
/Biostatistician
McGill University Health Center -
Montreal Children's Hospital Research Institute/
______________________________________________
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.