[R] Substitute problem
jim holtman
jholtman at gmail.com
Thu Oct 23 03:52:28 CEST 2008
Will this do it for you:
> x
X value row col ID n
1 1 11.105009 5511625 3463000 1 -619.1125
2 2 10.324148 5499625 3465000 0 1.0000
3 3 8.744591 5503625 3475000 0 1.0000
4 4 9.523473 5494625 3475000 3 -578.2354
5 5 8.856097 5507625 3480000 4 -619.1125
6 6 8.636881 5514625 3497000 5 -140.8012
> id_max=5 # the the max value you want to start at
> id_zero <- x$ID==0 # find zero values
> # replace zero values with increasing numbers
> x$ID[id_zero] <- cumsum(id_zero)[id_zero] + id_max
> x
X value row col ID n
1 1 11.105009 5511625 3463000 1 -619.1125
2 2 10.324148 5499625 3465000 6 1.0000
3 3 8.744591 5503625 3475000 7 1.0000
4 4 9.523473 5494625 3475000 3 -578.2354
5 5 8.856097 5507625 3480000 4 -619.1125
6 6 8.636881 5514625 3497000 5 -140.8012
On Wed, Oct 22, 2008 at 9:06 AM, Chris82 <rubenbauar at gmx.de> wrote:
>
> hello R users,
>
> I didn't find a solution for a special problem.
> I have two dataframes.
>
> dataframe1:
>
> X value row col ID
> 1 8.973498062 5512625 3460000 1
> 2 11.656658570 5501625 3464000 2
> 3 11.121777570 5495625 3473000 3
> 4 9.310465964 5508625 3477000 4
> 5 8.883483845 5515625 3496000 5
>
>
> dataframe2:
>
> X value row col ID n
> 1 11.105009400 5511625 3463000 1 -619.112472616732
> 2 10.324148150 5499625 3465000 0 1.000000000000
> 3 8.744590903 5503625 3475000 0 1.000000000000
> 4 9.523473123 5494625 3475000 3 -578.235381588725
> 5 8.856097133 5507625 3480000 4 -619.112472616732
> 6 8.636881453 5514625 3497000 5 -140.801233634174
>
> Now I want if column "n" in dataframe2 is greater than 0 column "ID" which
> is 0 is now maxium column "ID" in dataframe1 +1 and the for the second 0
> maximum + 2
>
> the finished dataframe2 should look like this:
>
> X value row col ID n
> 1 11.105009400 5511625 3463000 1 -619.112472616732
> 2 10.324148150 5499625 3465000 6 1.000000000000
> 3 8.744590903 5503625 3475000 7 1.000000000000
> 4 9.523473123 5494625 3475000 3 -578.235381588725
> 5 8.856097133 5507625 3480000 4 -619.112472616732
> 6 8.636881453 5514625 3497000 5 -140.801233634174
>
> My idea was below:
>
> lastrow1 <- length(dataframe2[,1])
> lastrow2 <- length(dataframe1[,1])
> anz <- sum(dataframe2[,6] > 0)
>
>
> for (k in 1:anz){
> for (i in 1:lastrow1){
> for (j in 1:lastrow2){
> if (dataframe2[i,6] > 0){
> dataframe2[i,5] <- max(dataframe1[j,5])+(k-k+1)
> }
> }
> }
> }
>
>
> but the result is:
>
> X value row col ID n
> 1 11.105009400 5511625 3463000 1 -619.112472616732
> 2 10.324148150 5499625 3465000 6 1.000000000000
> 3 8.744590903 5503625 3475000 6 1.000000000000
> 4 9.523473123 5494625 3475000 3 -578.235381588725
> 5 8.856097133 5507625 3480000 4 -619.112472616732
> 6 8.636881453 5514625 3497000 5 -140.801233634174
>
> R gives me the right value in the second row of "ID" with "6" but the third
> row of "ID" is also "6" but should be "7"
>
> any ideas?
>
> thanks!
> --
> View this message in context: http://www.nabble.com/Substitute-problem-tp20110333p20110333.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.
>
--
Jim Holtman
Cincinnati, OH
+1 513 646 9390
What is the problem that you are trying to solve?
More information about the R-help
mailing list