[R] Create a new dataframe from an existing dataframe
Gang Chen
gangchen at mail.nih.gov
Tue Jan 8 16:32:17 CET 2008
Yes, this works well. Also 'table' suggested by Bert Gunter also
works perfectly.
Thank all who've helped me on this.
Gang
On Jan 7, 2008, at 7:39 PM, jim holtman wrote:
> Does this do what you want?
>
>> x <- read.table(textConnection("A B C D
> + A1 B1 C1 D1
> + A1 B2 C1 D1
> + A1 B1 C1 D1
> + A1 B2 C2 D2
> + A2 B1 C1 D1
> + A1 B2 C2 D2
> + A1 B1 C2 D2
> + A2 B2 C1 D1
> + A1 B1 C2 D2
> + A2 B2 C1 D1"), header=TRUE)
>> counts <- ave(seq(nrow(x)), x$B, x$C, x$D, FUN=length) # get counts
>> x.new <- x[, -1] # delete "A"
>> x.new$FreqD <- counts # add new column
>> # print out unique entries
>> unique(x.new)
> B C D FreqD
> 1 B1 C1 D1 3
> 2 B2 C1 D1 3
> 4 B2 C2 D2 2
> 7 B1 C2 D2 2
>>
>
>
> On Jan 7, 2008 2:38 PM, Gang Chen <gangchen at mail.nih.gov> wrote:
>> Yes, I misstated it when I said that I would keep B and C. I want to
>> collapse column A, but count the frequency of D as a new column in
>> the new dataframe DF2 while collapsing A. The rows of columns B, C,
>> and D of course would be reduced because of A collapsing.
>>
>> For example, if dataframe DF is
>>
>> A B C D
>> A1 B1 C1 D1
>> A1 B2 C1 D1
>> A1 B1 C1 D1
>> A1 B2 C2 D2
>> A2 B1 C1 D1
>> A1 B2 C2 D2
>> A1 B1 C2 D2
>> A2 B2 C1 D1
>> A1 B1 C2 D2
>> A2 B2 C1 D1
>> ......
>>
>> I would like to have a new dataframe DF2
>>
>> B C D FreqA
>> B1 C1 D1 6
>> B1 C1 D2 31
>> B1 C2 D1 8
>> B1 C2 D2 14
>> B2 C1 D1 12
>> B2 C1 D2 43
>> B2 C2 D1 23
>> B2 C2 D2 43
>>
>> Thanks,
>> Gang
>>
>>
>>
>>
>> On Jan 7, 2008, at 2:06 PM, Duncan Murdoch wrote:
>>
>>> On 1/7/2008 1:28 PM, Gang Chen wrote:
>>>> I have a dataframe DF with 4 columns (variables) A, B, C, and D,
>>>> and want to create a new dataframe DF2 by keeping B and C in DF
>>>> but counting the frequency of D while collapsing A. I tried
>>>> by(DF$D, list(DF$B, DF$C), FUN=summary)
>>>> but this is not exactly what I want. What is a good way to do it?
>>>
>>> I think you can't do that. If you want to keep B and C, then you
>>> can't reduce the number of rows, but "collapsing A" sounds like you
>>> want fewer rows.
>>>
>>> Perhaps if you posted a simple before and after example?
>>>
>>> Duncan Murdoch
>>
>> ______________________________________________
>> 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 you are trying to solve?
More information about the R-help
mailing list