Hi everyone! I have a simple question. my data is predict_SO2_a 1 39.793231 2 30.252578 3 32.467584 4 31.941509 5 27.908320 6 11.594137 7 9.368125 8 12.319093 9 11.558811 10 7.937192 11 11.211306 12 12.400342 13 12.393146 14 13.256160 15 10.709600 16 9.966334 17 28.850652 18 10.024405 I want to insert row which is "NA" in 10th row that is .. predict_SO2_a 1 39.793231 2 30.252578 3 32.467584 4 31.941509 5 27.908320 6 11.594137 7 9.368125 8 12.319093 9 11.558811 10 NA .... and it becomes 19 rows in this data. however, I can't do this. my scipt is following topdata <- predict_SO2_a[1:10,] bottomdata <- predict_SO2_a[11:nrow(predict_SO2_a),] nadata <- data.frame(NA) d1 <- rbind(topdata,nadata) d2 <- rbind(d1, bottomdata) what is my problem?! Thank in advance! -- View this message in context: http://r.789695.n4.nabble.com/Insert-row-in-specific-location-between-data-frames-tp4634905.html Sent from the R help mailing list archive at Nabble.com.
Rui Barradas
2012-Jun-29 17:55 UTC
[R] Insert row in specific location between data frames
Hello, If you print 'topdata' and 'bottomdata' you'll see that they are not data.frames, they're vectors. This is because you are extracting one column only, which happens to be the only one. Solution: use c(). topdata <- predict_SO2_a[1:10, ] bottomdata <- predict_SO2_a[11:nrow(predict_SO2_a), ] nadata <- NA d1 <- c(topdata, nadata) d2 <- data.frame(predict_SO2_a=c(d1, bottomdata)) d2 Hope this helps, Rui Barradas Em 29-06-2012 18:01, pigpigmeow escreveu:> Hi everyone! I have a simple question. > > my data is > predict_SO2_a > 1 39.793231 > 2 30.252578 > 3 32.467584 > 4 31.941509 > 5 27.908320 > 6 11.594137 > 7 9.368125 > 8 12.319093 > 9 11.558811 > 10 7.937192 > 11 11.211306 > 12 12.400342 > 13 12.393146 > 14 13.256160 > 15 10.709600 > 16 9.966334 > 17 28.850652 > 18 10.024405 > > > > I want to insert row which is "NA" in 10th row > > that is .. > predict_SO2_a > 1 39.793231 > 2 30.252578 > 3 32.467584 > 4 31.941509 > 5 27.908320 > 6 11.594137 > 7 9.368125 > 8 12.319093 > 9 11.558811 > 10 NA > .... > and it becomes 19 rows in this data. > > > however, I can't do this. my scipt is following > topdata <- predict_SO2_a[1:10,] > bottomdata <- predict_SO2_a[11:nrow(predict_SO2_a),] > nadata <- data.frame(NA) > d1 <- rbind(topdata,nadata) > d2 <- rbind(d1, bottomdata) > > what is my problem?! > > Thank in advance! > > > > > -- > View this message in context: http://r.789695.n4.nabble.com/Insert-row-in-specific-location-between-data-frames-tp4634905.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help at 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. >
Peter Ehlers
2012-Jun-29 18:04 UTC
[R] Insert row in specific location between data frames
On 2012-06-29 10:01, pigpigmeow wrote:> Hi everyone! I have a simple question. > > my data is > predict_SO2_a > 1 39.793231 > 2 30.252578 > 3 32.467584 > 4 31.941509 > 5 27.908320 > 6 11.594137 > 7 9.368125 > 8 12.319093 > 9 11.558811 > 10 7.937192 > 11 11.211306 > 12 12.400342 > 13 12.393146 > 14 13.256160 > 15 10.709600 > 16 9.966334 > 17 28.850652 > 18 10.024405 > > > > I want to insert row which is "NA" in 10th rowTry this: d <- data.frame(x = 101:118, y = rnorm(18)) d2 <- data.frame( rbind(head(d, 9), NA, tail(d, -9)), row.names = NULL) Peter Ehlers> > that is .. > predict_SO2_a > 1 39.793231 > 2 30.252578 > 3 32.467584 > 4 31.941509 > 5 27.908320 > 6 11.594137 > 7 9.368125 > 8 12.319093 > 9 11.558811 > 10 NA > .... > and it becomes 19 rows in this data. > > > however, I can't do this. my scipt is following > topdata<- predict_SO2_a[1:10,] > bottomdata<- predict_SO2_a[11:nrow(predict_SO2_a),] > nadata<- data.frame(NA) > d1<- rbind(topdata,nadata) > d2<- rbind(d1, bottomdata) > > what is my problem?! > > Thank in advance! > > > > > -- > View this message in context: http://r.789695.n4.nabble.com/Insert-row-in-specific-location-between-data-frames-tp4634905.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help at 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, You can try this: dat1<-read.table(text=" predict_SO2_a 1????? 39.793231 2????? 30.252578 3????? 32.467584 4????? 31.941509 5????? 27.908320 6????? 11.594137 7??????? 9.368125 8????? 12.319093 9????? 11.558811 10????? 7.937192 11????? 11.211306 12????? 12.400342 13????? 12.393146 14????? 13.256160 15????? 10.709600 16????? 9.966334 17????? 28.850652 18????? 10.024405 ",sep="",header=TRUE) ?dat2<-dat1[10,] ?dat2<-NA dat3<-data.frame(predict_SO2_a=c(dat1[1:9,],dat2,dat1[10:18,])) A.K. ----- Original Message ----- From: pigpigmeow <glorykwok at hotmail.com> To: r-help at r-project.org Cc: Sent: Friday, June 29, 2012 1:01 PM Subject: [R] Insert row in specific location between data frames Hi everyone! I have a simple question. my data is predict_SO2_a 1? ? ? 39.793231 2? ? ? 30.252578 3? ? ? 32.467584 4? ? ? 31.941509 5? ? ? 27.908320 6? ? ? 11.594137 7? ? ? ? 9.368125 8? ? ? 12.319093 9? ? ? 11.558811 10? ? ? 7.937192 11? ? ? 11.211306 12? ? ? 12.400342 13? ? ? 12.393146 14? ? ? 13.256160 15? ? ? 10.709600 16? ? ? 9.966334 17? ? ? 28.850652 18? ? ? 10.024405 I want to insert row which is "NA" in 10th row that is .. predict_SO2_a 1? ? ? 39.793231 2? ? ? 30.252578 3? ? ? 32.467584 4? ? ? 31.941509 5? ? ? 27.908320 6? ? ? 11.594137 7? ? ? ? 9.368125 8? ? ? 12.319093 9? ? ? 11.558811 10? ? NA .... and it becomes 19 rows in this data. however, I can't do this. my scipt is following topdata <- predict_SO2_a[1:10,] bottomdata <- predict_SO2_a[11:nrow(predict_SO2_a),] nadata <- data.frame(NA) d1 <- rbind(topdata,nadata) d2 <- rbind(d1, bottomdata) what is my problem?! Thank in advance! -- View this message in context: http://r.789695.n4.nabble.com/Insert-row-in-specific-location-between-data-frames-tp4634905.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ R-help at 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.
David Winsemius
2012-Jun-29 19:31 UTC
[R] Insert row in specific location between data frames
On Jun 29, 2012, at 2:48 PM, Peter Ehlers wrote:> On 2012-06-29 11:29, David Winsemius wrote: >> >> On Jun 29, 2012, at 2:04 PM, Peter Ehlers wrote: >> >>> >>> On 2012-06-29 10:01, pigpigmeow wrote: >>>> Hi everyone! I have a simple question. >>>> >>>> my data is >>>> predict_SO2_a >>>> 1 39.793231 >>>> 2 30.252578 >>>> 3 32.467584 >>>> 4 31.941509 >>>> 5 27.908320 >>>> 6 11.594137 >>>> 7 9.368125 >>>> 8 12.319093 >>>> 9 11.558811 >>>> 10 7.937192 >>>> 11 11.211306 >>>> 12 12.400342 >>>> 13 12.393146 >>>> 14 13.256160 >>>> 15 10.709600 >>>> 16 9.966334 >>>> 17 28.850652 >>>> 18 10.024405 >>>> >>>> >>>> >>>> I want to insert row which is "NA" in 10th row >>> >>> Try this: >>> >>> d<- data.frame(x = 101:118, y = rnorm(18)) >>> d2<- data.frame( >>> rbind(head(d, 9), NA, tail(d, -9)), >>> row.names = NULL) >> >> That threw an error for me. >> Error in do.call(f, cal0) : second argument must be a list > > ?? > Works fine for me on Windows Vista, bot 32/64-bit.Seems to be the rbind call. MacOS / R 2.14.2 R version 2.14.2 (2012-02-29) Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit) d2<- rbind(head(d, 9), NA, tail(d, -9)) Error in do.call(f, cal0) : second argument must be a list> > Also works for one-column dataframes. > > Peter > >> >> What about this? >> >> d[ c( 1:9, NA, 10:NROW(d) ), ] >> >> I do not like this behavior of "[" but I suppose it is useful >> sometimes. >> >David Winsemius, MD West Hartford, CT
i'm not success to insert row in specific location and merge another file I have a question and I feel confused about the usage of "rbind", "cbind" and "data.frame) data 1:> predict_SO2_apredict_SO2_a 1 39.793231 2 30.252578 3 32.467584 4 31.941509 5 27.908320 6 11.594137 7 9.368125 8 12.319093 9 11.558811 10 NA 11 11.211306 12 12.400342 13 12.393146 14 13.256160 15 10.709600 16 9.966334 17 28.850652 18 10.024405 data 2: predict_SO2_b [1] 16.931975 18.286223 11.454404 6.256828 7.951174 5.364070 9.675208 7.328439 9.957388 14.603543 14.605044 8.681327 9.450510 10.628049 13.178781 11.757256 [17] 23.820308 when I used "merge" and combine data1 and data2, it showed the error Error in rbind(deparse.level, ...) : replacement has length zero. I found the display of these two data are different. I'm confused -- View this message in context: http://r.789695.n4.nabble.com/Insert-row-in-specific-location-between-data-frames-tp4634905p4635020.html Sent from the R help mailing list archive at Nabble.com.