[R] weight cases?
Dear all, This is probably a stupid question for which I have a solution, which unfortunately is not as straighforward as I'd like. I wonder if there's a simple way to apply a weighting variable for the cases of a dataframe (well I'm sure there is, I just cannot find it). My toy example: my.data - data.frame(var1=c(c, e, a, d, b), var2=c(E, B, A, C, D), weight=c(1, 2, 1, 1, 1)) table(my.data$var1, my.data$var2) A B C D E a 1 0 0 0 0 b 0 0 0 1 0 c 0 0 0 0 1 d 0 0 1 0 0 e 0 1 0 0 0 Applying the weight variable, the table should yield a value of 2 for the eB combination: table(my.data$var1, my.data$var2) A B C D E a 1 0 0 0 0 b 0 0 0 1 0 c 0 0 0 0 1 d 0 0 1 0 0 e 0 2 0 0 0 Thanks in advance, Adrian -- Adrian Dusa Romanian Social Data Archive 1, Schitu Magureanu Bd 050025 Bucharest sector 5 Romania Tel./Fax: +40 21 3126618 \ +40 21 3120210 / int.101 __ R-help@stat.math.ethz.ch 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.
Re: [R] weight cases?
Try this: table(lapply(my.data, rep, my.data$weight)[1:2]) On 10/14/06, Adrian Dusa [EMAIL PROTECTED] wrote: Dear all, This is probably a stupid question for which I have a solution, which unfortunately is not as straighforward as I'd like. I wonder if there's a simple way to apply a weighting variable for the cases of a dataframe (well I'm sure there is, I just cannot find it). My toy example: my.data - data.frame(var1=c(c, e, a, d, b), var2=c(E, B, A, C, D), weight=c(1, 2, 1, 1, 1)) table(my.data$var1, my.data$var2) A B C D E a 1 0 0 0 0 b 0 0 0 1 0 c 0 0 0 0 1 d 0 0 1 0 0 e 0 1 0 0 0 Applying the weight variable, the table should yield a value of 2 for the eB combination: table(my.data$var1, my.data$var2) A B C D E a 1 0 0 0 0 b 0 0 0 1 0 c 0 0 0 0 1 d 0 0 1 0 0 e 0 2 0 0 0 Thanks in advance, Adrian -- Adrian Dusa Romanian Social Data Archive 1, Schitu Magureanu Bd 050025 Bucharest sector 5 Romania Tel./Fax: +40 21 3126618 \ +40 21 3120210 / int.101 __ R-help@stat.math.ethz.ch 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. __ R-help@stat.math.ethz.ch 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.
Re: [R] weight cases?
Thanks for this Gabor, Sometimes weights can take various values, like 0.9 rep(letters[1:3], c(1, 0.9, 1.6)) [1] a c What if the weight variable would be: my.data$weight - c(0.4, 2, 1.3, 0.9, 1) The way I found the solution was to compute the unweighted table, then find the weight for each unique combination and multiply that with the corresponding row-column entry in the table. The solution though is not very satisfactory: my.data$var1 - as.factor(my.data$var1) my.data$var2 - as.factor(my.data$var2) total - expand.grid(levels(my.data$var1), levels(my.data$var2)) rowsmy.data - apply(unique(my.data[,1:2]), 1, paste, collapse=) rowstotal - apply(total, 1, paste, collapse=) total$weight - 0 total$weight[sapply(rowsmy.data, function(x) which(rowstotal == x))] - unique(my.data)[,3] (unweighted - table(my.data$var1, my.data$var2)) round(unweighted*total$weight, 0) Yet another question: how would the weight variable be applied to correlate two numerical variables? Best, Adrian On Saturday 14 October 2006 16:00, Gabor Grothendieck wrote: Try this: table(lapply(my.data, rep, my.data$weight)[1:2]) On 10/14/06, Adrian Dusa [EMAIL PROTECTED] wrote: Dear all, This is probably a stupid question for which I have a solution, which unfortunately is not as straighforward as I'd like. I wonder if there's a simple way to apply a weighting variable for the cases of a dataframe (well I'm sure there is, I just cannot find it). My toy example: my.data - data.frame(var1=c(c, e, a, d, b), var2=c(E, B, A, C, D), weight=c(1, 2, 1, 1, 1)) table(my.data$var1, my.data$var2) A B C D E a 1 0 0 0 0 b 0 0 0 1 0 c 0 0 0 0 1 d 0 0 1 0 0 e 0 1 0 0 0 Applying the weight variable, the table should yield a value of 2 for the eB combination: table(my.data$var1, my.data$var2) A B C D E a 1 0 0 0 0 b 0 0 0 1 0 c 0 0 0 0 1 d 0 0 1 0 0 e 0 2 0 0 0 Thanks in advance, Adrian -- Adrian Dusa Romanian Social Data Archive 1, Schitu Magureanu Bd 050025 Bucharest sector 5 Romania Tel./Fax: +40 21 3126618 \ +40 21 3120210 / int.101 __ R-help@stat.math.ethz.ch 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. -- Adrian Dusa Romanian Social Data Archive 1, Schitu Magureanu Bd 050025 Bucharest sector 5 Romania Tel./Fax: +40 21 3126618 \ +40 21 3120210 / int.101 __ R-help@stat.math.ethz.ch 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.
Re: [R] weight cases?
Try this (and round the result to make to it comparable to your calculation): xtabs(weight ~ var1 + var2, my.data) On 10/14/06, Adrian Dusa [EMAIL PROTECTED] wrote: Thanks for this Gabor, Sometimes weights can take various values, like 0.9 rep(letters[1:3], c(1, 0.9, 1.6)) [1] a c What if the weight variable would be: my.data$weight - c(0.4, 2, 1.3, 0.9, 1) The way I found the solution was to compute the unweighted table, then find the weight for each unique combination and multiply that with the corresponding row-column entry in the table. The solution though is not very satisfactory: my.data$var1 - as.factor(my.data$var1) my.data$var2 - as.factor(my.data$var2) total - expand.grid(levels(my.data$var1), levels(my.data$var2)) rowsmy.data - apply(unique(my.data[,1:2]), 1, paste, collapse=) rowstotal - apply(total, 1, paste, collapse=) total$weight - 0 total$weight[sapply(rowsmy.data, function(x) which(rowstotal == x))] - unique(my.data)[,3] (unweighted - table(my.data$var1, my.data$var2)) round(unweighted*total$weight, 0) Yet another question: how would the weight variable be applied to correlate two numerical variables? Best, Adrian On Saturday 14 October 2006 16:00, Gabor Grothendieck wrote: Try this: table(lapply(my.data, rep, my.data$weight)[1:2]) On 10/14/06, Adrian Dusa [EMAIL PROTECTED] wrote: Dear all, This is probably a stupid question for which I have a solution, which unfortunately is not as straighforward as I'd like. I wonder if there's a simple way to apply a weighting variable for the cases of a dataframe (well I'm sure there is, I just cannot find it). My toy example: my.data - data.frame(var1=c(c, e, a, d, b), var2=c(E, B, A, C, D), weight=c(1, 2, 1, 1, 1)) table(my.data$var1, my.data$var2) A B C D E a 1 0 0 0 0 b 0 0 0 1 0 c 0 0 0 0 1 d 0 0 1 0 0 e 0 1 0 0 0 Applying the weight variable, the table should yield a value of 2 for the eB combination: table(my.data$var1, my.data$var2) A B C D E a 1 0 0 0 0 b 0 0 0 1 0 c 0 0 0 0 1 d 0 0 1 0 0 e 0 2 0 0 0 Thanks in advance, Adrian -- Adrian Dusa Romanian Social Data Archive 1, Schitu Magureanu Bd 050025 Bucharest sector 5 Romania Tel./Fax: +40 21 3126618 \ +40 21 3120210 / int.101 __ R-help@stat.math.ethz.ch 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. -- Adrian Dusa Romanian Social Data Archive 1, Schitu Magureanu Bd 050025 Bucharest sector 5 Romania Tel./Fax: +40 21 3126618 \ +40 21 3120210 / int.101 __ R-help@stat.math.ethz.ch 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.
Re: [R] weight cases?
I missed your second question. See ?cov.wt On 10/14/06, Gabor Grothendieck [EMAIL PROTECTED] wrote: Try this (and round the result to make to it comparable to your calculation): xtabs(weight ~ var1 + var2, my.data) On 10/14/06, Adrian Dusa [EMAIL PROTECTED] wrote: Thanks for this Gabor, Sometimes weights can take various values, like 0.9 rep(letters[1:3], c(1, 0.9, 1.6)) [1] a c What if the weight variable would be: my.data$weight - c(0.4, 2, 1.3, 0.9, 1) The way I found the solution was to compute the unweighted table, then find the weight for each unique combination and multiply that with the corresponding row-column entry in the table. The solution though is not very satisfactory: my.data$var1 - as.factor(my.data$var1) my.data$var2 - as.factor(my.data$var2) total - expand.grid(levels(my.data$var1), levels(my.data$var2)) rowsmy.data - apply(unique(my.data[,1:2]), 1, paste, collapse=) rowstotal - apply(total, 1, paste, collapse=) total$weight - 0 total$weight[sapply(rowsmy.data, function(x) which(rowstotal == x))] - unique(my.data)[,3] (unweighted - table(my.data$var1, my.data$var2)) round(unweighted*total$weight, 0) Yet another question: how would the weight variable be applied to correlate two numerical variables? Best, Adrian On Saturday 14 October 2006 16:00, Gabor Grothendieck wrote: Try this: table(lapply(my.data, rep, my.data$weight)[1:2]) On 10/14/06, Adrian Dusa [EMAIL PROTECTED] wrote: Dear all, This is probably a stupid question for which I have a solution, which unfortunately is not as straighforward as I'd like. I wonder if there's a simple way to apply a weighting variable for the cases of a dataframe (well I'm sure there is, I just cannot find it). My toy example: my.data - data.frame(var1=c(c, e, a, d, b), var2=c(E, B, A, C, D), weight=c(1, 2, 1, 1, 1)) table(my.data$var1, my.data$var2) A B C D E a 1 0 0 0 0 b 0 0 0 1 0 c 0 0 0 0 1 d 0 0 1 0 0 e 0 1 0 0 0 Applying the weight variable, the table should yield a value of 2 for the eB combination: table(my.data$var1, my.data$var2) A B C D E a 1 0 0 0 0 b 0 0 0 1 0 c 0 0 0 0 1 d 0 0 1 0 0 e 0 2 0 0 0 Thanks in advance, Adrian -- Adrian Dusa Romanian Social Data Archive 1, Schitu Magureanu Bd 050025 Bucharest sector 5 Romania Tel./Fax: +40 21 3126618 \ +40 21 3120210 / int.101 __ R-help@stat.math.ethz.ch 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. -- Adrian Dusa Romanian Social Data Archive 1, Schitu Magureanu Bd 050025 Bucharest sector 5 Romania Tel./Fax: +40 21 3126618 \ +40 21 3120210 / int.101 __ R-help@stat.math.ethz.ch 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.
Re: [R] weight cases?
On Saturday 14 October 2006 16:52, Gabor Grothendieck wrote: Try this (and round the result to make to it comparable to your calculation): xtabs(weight ~ var1 + var2, my.data) Oh yes... :) It was so simple. Thanks for the cov.wt() as well. Regards, Adrian -- Adrian Dusa Romanian Social Data Archive 1, Schitu Magureanu Bd 050025 Bucharest sector 5 Romania Tel./Fax: +40 21 3126618 \ +40 21 3120210 / int.101 __ R-help@stat.math.ethz.ch 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.