[R] Simple but elusive - expand back from counts
Joshua Wiley
jwiley.psych at gmail.com
Tue Mar 29 21:16:19 CEST 2011
Hi,
You can use rep() to repeat the appropriate rows as in V4. For example:
tmp[rep(rownames(tmp), tmp$V4), ]
V1 V2 V3 V4
1 44 10 abc 1
2 44 10 def 1
3 44 12 abc 2
3.1 44 12 abc 2
if you wanted, you could then reset the row names to NULL to get 1, 2,
3, 4 rather than 3, 3.1
rownames(tmp) <- NULL ## AFTER saving the expanded form.
Cheers,
Josh
On Tue, Mar 29, 2011 at 11:15 AM, jjap <sabjap at gmail.com> wrote:
> Dear R-users,
>
> This should be simple but still eludes me:
>
> Given the following
> tmp<-as.data.frame(matrix(c(44, 10, "abc", 1, 44, 10, "def", 1, 44, 12,
> "abc", 2), 3, 4, byrow=T))
>
> I want to expand the data to the following form:
>
> V1 V2 V3 V4
> 1 44 10 abc 1
> 2 44 10 def 1
> 3 44 12 abc 1
> 4 44 12 abc 1
>
> The last row of the original df was duplicated the row by the number in the
> 4th column (which could be expendable being all ones)
> I clumsily tried a few variants of a loop but I am not making any progress.
> Any hints would be greatly appreciated.
> for (i in 1:3){
> rbind(rep(tmp[i,], temp[i,4])
> }
>
> --
> View this message in context: http://r.789695.n4.nabble.com/Simple-but-elusive-expand-back-from-counts-tp3415727p3415727.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.
>
--
Joshua Wiley
Ph.D. Student, Health Psychology
University of California, Los Angeles
http://www.joshuawiley.com/
More information about the R-help
mailing list