Jacqueline Oehri
2013-Jun-26 09:36 UTC
[R] 2nd question about adding an additional variable along certain criteria in a dataframe
Hello everybody, I have a question concerning the work with my dataframe and i hope some of you can help me out: I have A data frame called "WWA" that looks like the "testframe" underneath: Additionally, i have a testvector, containing coordinate IDs: testvector <-c("503146","551154","557154")> testframe:testcoordID testcommunity testaltitude testSpeciesName 1 503146 Bournes 523.2 Bellis perennis 2 503146 Bournes 321.5 Cynosurus cristatus 3 557154 Bournes 654.1 Festuca pratensis 4 557154 Aigle 938.6 Bellis perennis 5 569226 Aigle 401.3 Bellis perennis 6 599246 Aigle 765.9 Prunella vulgaris I added an additional collumn:> testframe$testNCCR_land_use <- c("to be assigned") > testframetestcoordID testcommunity testaltitude testSpeciesName testNCCR_land_use 1 503146 Bournes 523.2 Bellis perennis to be assigned 2 503146 Bournes 321.5 Cynosurus cristatus to be assigned 3 557154 Bournes 654.1 Festuca pratensis to be assigned 4 557154 Aigle 938.6 Bellis perennis to be assigned 5 569226 Aigle 401.3 Bellis perennis to be assigned 6 599246 Aigle 765.9 Prunella vulgaris to be assigned -->QUESTION: Now I need to compute a function, that checks for the coordID in every row, if the respective coordinateID is contained in the test-vector or not! 1) If the coordID in the row is contained in the testvector --> It should assign the name "gfgh" into the "testNCCR-land_use_collumn to this row! 2)If the coordID in the row is not contained in the testvector--> there should be done nothing and there will still be "to be assigned" in the testNCCR_land_use column. I tried something like this but it didnt work: Can somebody help me out? It says: "Error, trial to use a non-function" or something like this.. for (i in 1:6(testframe)){ + if ((length(intersect(testvector, testframe$testcoordID[i]))) == 1){ + testframe$testNCCR_land_use[i]<-("testgfgh")} + } Fehler: Versuch eine Nicht-Funktion anzuwenden Thank you veery much for your help!!!! (I built the testframe up like this: testcoordID <- c(as.integer("503146"),as.integer("503146"),as.integer("557154"),as.integer("557154"),as.integer("569226"),as.integer("599246")) testcommunity <-factor(c("Bournes","Bournes","Bournes", "Aigle", "Aigle", "Aigle")) testaltitude <- c(523.2,321.5,654.1,938.6,401.3,765.9) testSpeciesName <-c( "Bellis perennis", "Cynosurus cristatus", "Festuca pratensis", "Bellis perennis", "Bellis perennis", "Prunella vulgaris") testframe <- data.frame(testcoordID,testcommunity,testaltitude, testSpeciesName) [[alternative HTML version deleted]]
Sarah Goslee
2013-Jun-26 15:49 UTC
[R] 2nd question about adding an additional variable along certain criteria in a dataframe
Hi, Using your testframe and testvector (and thank you for the convenient reproducible example): # I used NA instead of "to be assigned" testframe <- data.frame(testframe, landuse = "NA", stringsAsFactors=FALSE) # checks membership in testvector testframe[testframe$testcoordID %in% testvector, "landuse"] <- "gfgh" Sarah On Wed, Jun 26, 2013 at 5:36 AM, Jacqueline Oehri <jacqueline.oehri at gmail.com> wrote:> Hello everybody, > > I have a question concerning the work with my dataframe and i hope some of > you can help me out: > > I have A data frame called "WWA" that looks like the "testframe" > underneath: > > Additionally, i have a testvector, containing coordinate IDs: > testvector <-c("503146","551154","557154") > >> testframe: > > testcoordID testcommunity testaltitude testSpeciesName > 1 503146 Bournes 523.2 Bellis perennis > 2 503146 Bournes 321.5 Cynosurus cristatus > 3 557154 Bournes 654.1 Festuca pratensis > 4 557154 Aigle 938.6 Bellis perennis > 5 569226 Aigle 401.3 Bellis perennis > 6 599246 Aigle 765.9 Prunella vulgaris > > I added an additional collumn: > >> testframe$testNCCR_land_use <- c("to be assigned") >> testframe > > testcoordID testcommunity testaltitude testSpeciesName > testNCCR_land_use > 1 503146 Bournes 523.2 Bellis > perennis to be assigned > 2 503146 Bournes 321.5 Cynosurus cristatus to > be assigned > 3 557154 Bournes 654.1 Festuca pratensis > to be assigned > 4 557154 Aigle 938.6 Bellis > perennis to be assigned > 5 569226 Aigle 401.3 Bellis > perennis to be assigned > 6 599246 Aigle 765.9 Prunella > vulgaris to be assigned > > > > -->QUESTION: > Now I need to compute a function, that checks for the coordID in every > row, if the respective coordinateID is contained in the test-vector or not! > > 1) If the coordID in the row is contained in the testvector --> It should > assign the name "gfgh" into the "testNCCR-land_use_collumn to this row! > > 2)If the coordID in the row is not contained in the testvector--> there > should be done nothing and there will still be "to be assigned" in the > testNCCR_land_use column. > > I tried something like this but it didnt work: Can somebody help me out? > It says: "Error, trial to use a non-function" or something like this.. > > > for (i in 1:6(testframe)){ > + if ((length(intersect(testvector, testframe$testcoordID[i]))) == 1){ > + testframe$testNCCR_land_use[i]<-("testgfgh")} > + } > Fehler: Versuch eine Nicht-Funktion anzuwenden > > > Thank you veery much for your help!!!! > > > > (I built the testframe up like this: > > testcoordID <- > c(as.integer("503146"),as.integer("503146"),as.integer("557154"),as.integer("557154"),as.integer("569226"),as.integer("599246")) > testcommunity <-factor(c("Bournes","Bournes","Bournes", "Aigle", "Aigle", > "Aigle")) > testaltitude <- c(523.2,321.5,654.1,938.6,401.3,765.9) > testSpeciesName <-c( "Bellis perennis", > "Cynosurus cristatus", > "Festuca pratensis", > "Bellis perennis", > "Bellis perennis", > "Prunella vulgaris") > testframe <- data.frame(testcoordID,testcommunity,testaltitude, > testSpeciesName) > > [[alternative HTML version deleted]] > > ______________________________________________ > 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.-- Sarah Goslee http://www.stringpage.com http://www.sarahgoslee.com http://www.functionaldiversity.org