Re: [R] about combining two dataframes

2017-05-24 Thread Bert Gunter
On Wed, May 24, 2017 at 10:50 AM, lily li <chocol...@gmail.com> wrote:
> Thanks, I didn't know the email function before.
> The code works. I found that using "=" is different from using "<-".
>
 If you are referring to assignment in the evaluation environment
(instead of e.g. to values of function arguments), then what you have
stated is wrong. See ?"<-"

-- Bert



> On Wed, May 24, 2017 at 11:41 AM, David L Carlson <dcarl...@tamu.edu> wrote:
>
>> Is there a reason not to just rename the columns?
>>
>> First, you should use dput(DF1) and dput(DF2) to send your example tables
>> to the list:
>>
>> DF1 <- structure(list(year = c(1981L, 1981L, 1981L, 1981L), month = c(1L,
>> 1L, 1L, 1L), day = 1:4, product1 = c(18L, 19L, 16L, 19L), product2 = c(56L,
>> 45L, 48L, 50L), product3 = c(20L, 22L, 28L, 21L)), .Names = c("year",
>> "month", "day", "product1", "product2", "product3"), class = "data.frame",
>> row.names = c(NA, -4L))
>>
>> DF2 <- structure(list(yr = c(1981L, 1981L, 1981L), mon = c(2L, 2L, 2L
>> ), d = 1:3, prod = c(17L, 20L, 21L), prod2 = c(49L, 47L, 52L),
>> prod3 = c(25L, 23L, 27L)), .Names = c("yr", "mon", "d", "prod",
>> "prod2", "prod3"), class = "data.frame", row.names = c(NA, -3L
>> ))
>>
>> Assuming they are the same structure as you said:
>>
>> colnames(DF2) <- colnames(DF1)
>> rbind(DF1, DF2)
>> #   year month day product1 product2 product3
>> # 1 1981 1   1   18   56   20
>> # 2 1981 1   2   19   45   22
>> # 3 1981 1   3   16   48   28
>> # 4 1981 1   4   19   50   21
>> # 5 1981 2   1   17   49   25
>> # 6 1981 2   2   20   47   23
>> # 7 1981 2   3   21   52   27
>>
>> The attached .png image file shows you how to send plain text emails to
>> r-help using gmail.
>>
>> -
>> David L Carlson
>> Department of Anthropology
>> Texas A University
>> College Station, TX 77840-4352
>>
>> -Original Message-
>> From: R-help [mailto:r-help-boun...@r-project.org] On Behalf Of lily li
>> Sent: Wednesday, May 24, 2017 12:30 PM
>> To: R mailing list <r-help@r-project.org>
>> Subject: [R] about combining two dataframes
>>
>> Hi all,
>>
>> I have a question about combining two data frames. For example, there are
>> the two dataframes below, with the same structure but different column
>> names and column lengths. How to add the values in DF2 to the end of DF1,
>> though the column names do not match? How to add more than two? Thanks.
>>
>> DF1
>> year   month   day   product1   product2   product3
>> 1981 1  1 18  5620
>> 1981 1  2 19  4522
>> 1981 1  3 16  4828
>> 1981 1  4 19  5021
>>
>> DF2
>> yr mon  d prodprod2   prod3
>> 1981 2  1 17  4925
>> 1981 2  2 20  4723
>> 1981 2  3 21  5227
>>
>> I use the code below but it does not work.
>> require(dplyr)
>> bind_rows(DF1, DF2) or bind_cols(DF1, DF2)
>>
>> [[alternative HTML version deleted]]
>>
>> __
>> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> 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.
>>
>
> [[alternative HTML version deleted]]
>
> __
> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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] about combining two dataframes

2017-05-24 Thread lily li
Thanks, I didn't know the email function before.
The code works. I found that using "=" is different from using "<-".


On Wed, May 24, 2017 at 11:41 AM, David L Carlson <dcarl...@tamu.edu> wrote:

> Is there a reason not to just rename the columns?
>
> First, you should use dput(DF1) and dput(DF2) to send your example tables
> to the list:
>
> DF1 <- structure(list(year = c(1981L, 1981L, 1981L, 1981L), month = c(1L,
> 1L, 1L, 1L), day = 1:4, product1 = c(18L, 19L, 16L, 19L), product2 = c(56L,
> 45L, 48L, 50L), product3 = c(20L, 22L, 28L, 21L)), .Names = c("year",
> "month", "day", "product1", "product2", "product3"), class = "data.frame",
> row.names = c(NA, -4L))
>
> DF2 <- structure(list(yr = c(1981L, 1981L, 1981L), mon = c(2L, 2L, 2L
> ), d = 1:3, prod = c(17L, 20L, 21L), prod2 = c(49L, 47L, 52L),
> prod3 = c(25L, 23L, 27L)), .Names = c("yr", "mon", "d", "prod",
> "prod2", "prod3"), class = "data.frame", row.names = c(NA, -3L
> ))
>
> Assuming they are the same structure as you said:
>
> colnames(DF2) <- colnames(DF1)
> rbind(DF1, DF2)
> #   year month day product1 product2 product3
> # 1 1981 1   1   18   56   20
> # 2 1981 1   2   19   45   22
> # 3 1981 1   3   16   48   28
> # 4 1981 1   4   19   50   21
> # 5 1981 2   1   17   49   25
> # 6 1981 2   2   20   47   23
> # 7 1981 2   3   21   52   27
>
> The attached .png image file shows you how to send plain text emails to
> r-help using gmail.
>
> -
> David L Carlson
> Department of Anthropology
> Texas A University
> College Station, TX 77840-4352
>
> -Original Message-
> From: R-help [mailto:r-help-boun...@r-project.org] On Behalf Of lily li
> Sent: Wednesday, May 24, 2017 12:30 PM
> To: R mailing list <r-help@r-project.org>
> Subject: [R] about combining two dataframes
>
> Hi all,
>
> I have a question about combining two data frames. For example, there are
> the two dataframes below, with the same structure but different column
> names and column lengths. How to add the values in DF2 to the end of DF1,
> though the column names do not match? How to add more than two? Thanks.
>
> DF1
> year   month   day   product1   product2   product3
> 1981 1  1 18  5620
> 1981 1  2 19  4522
> 1981 1  3 16  4828
> 1981 1  4 19  5021
>
> DF2
> yr mon  d prodprod2   prod3
> 1981 2  1 17  4925
> 1981 2  2 20  4723
> 1981 2  3 21  5227
>
> I use the code below but it does not work.
> require(dplyr)
> bind_rows(DF1, DF2) or bind_cols(DF1, DF2)
>
> [[alternative HTML version deleted]]
>
> __
> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.
>

[[alternative HTML version deleted]]

__
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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] about combining two dataframes

2017-05-24 Thread lily li
Thanks for your reply. I created the two dataframes (just numbers from txt
files) in one for loop, so that it is confused to give them the same column
names. That is the reason that I give them different column names to
differentiate them, but it causes difficulty in later combining them.


On Wed, May 24, 2017 at 11:42 AM, Ulrik Stervbo 
wrote:

> Hi Lily,
>
> maybe you should read up on what bind_rows/bind_cols (or the base
> functions rbind and cbind) do.
>
> bind_cols and cbind will fail in this case because of the different number
> of rows.
>
> bind_rows and rbind will fail because the column names are different - how
> can R know that month and mon really is the same.
>
> Depending on what you want, you should unify the column names (I have a
> hunch that this is what you want), or make sure the data.frames have the
> same number of rows.
>
> HTH
> Ulrik
>
>
>
> On Wed, 24 May 2017 at 19:30 lily li  wrote:
>
>> Hi all,
>>
>> I have a question about combining two data frames. For example, there are
>> the two dataframes below, with the same structure but different column
>> names and column lengths. How to add the values in DF2 to the end of DF1,
>> though the column names do not match? How to add more than two? Thanks.
>>
>> DF1
>> year   month   day   product1   product2   product3
>> 1981 1  1 18  5620
>> 1981 1  2 19  4522
>> 1981 1  3 16  4828
>> 1981 1  4 19  5021
>>
>> DF2
>> yr mon  d prodprod2   prod3
>> 1981 2  1 17  4925
>> 1981 2  2 20  4723
>> 1981 2  3 21  5227
>>
>> I use the code below but it does not work.
>> require(dplyr)
>> bind_rows(DF1, DF2) or bind_cols(DF1, DF2)
>>
>> [[alternative HTML version deleted]]
>>
>> __
>> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> 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.
>>
>

[[alternative HTML version deleted]]

__
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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] about combining two dataframes

2017-05-24 Thread Ulrik Stervbo
Hi Lily,

maybe you should read up on what bind_rows/bind_cols (or the base functions
rbind and cbind) do.

bind_cols and cbind will fail in this case because of the different number
of rows.

bind_rows and rbind will fail because the column names are different - how
can R know that month and mon really is the same.

Depending on what you want, you should unify the column names (I have a
hunch that this is what you want), or make sure the data.frames have the
same number of rows.

HTH
Ulrik



On Wed, 24 May 2017 at 19:30 lily li  wrote:

> Hi all,
>
> I have a question about combining two data frames. For example, there are
> the two dataframes below, with the same structure but different column
> names and column lengths. How to add the values in DF2 to the end of DF1,
> though the column names do not match? How to add more than two? Thanks.
>
> DF1
> year   month   day   product1   product2   product3
> 1981 1  1 18  5620
> 1981 1  2 19  4522
> 1981 1  3 16  4828
> 1981 1  4 19  5021
>
> DF2
> yr mon  d prodprod2   prod3
> 1981 2  1 17  4925
> 1981 2  2 20  4723
> 1981 2  3 21  5227
>
> I use the code below but it does not work.
> require(dplyr)
> bind_rows(DF1, DF2) or bind_cols(DF1, DF2)
>
> [[alternative HTML version deleted]]
>
> __
> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.
>

[[alternative HTML version deleted]]

__
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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] about combining two dataframes

2017-05-24 Thread David L Carlson
Is there a reason not to just rename the columns?

First, you should use dput(DF1) and dput(DF2) to send your example tables to 
the list:

DF1 <- structure(list(year = c(1981L, 1981L, 1981L, 1981L), month = c(1L, 
1L, 1L, 1L), day = 1:4, product1 = c(18L, 19L, 16L, 19L), product2 = c(56L, 
45L, 48L, 50L), product3 = c(20L, 22L, 28L, 21L)), .Names = c("year", 
"month", "day", "product1", "product2", "product3"), class = "data.frame", 
row.names = c(NA, -4L))

DF2 <- structure(list(yr = c(1981L, 1981L, 1981L), mon = c(2L, 2L, 2L
), d = 1:3, prod = c(17L, 20L, 21L), prod2 = c(49L, 47L, 52L), 
prod3 = c(25L, 23L, 27L)), .Names = c("yr", "mon", "d", "prod", 
"prod2", "prod3"), class = "data.frame", row.names = c(NA, -3L
))

Assuming they are the same structure as you said:

colnames(DF2) <- colnames(DF1)
rbind(DF1, DF2)
#   year month day product1 product2 product3
# 1 1981 1   1   18   56   20
# 2 1981 1   2   19   45   22
# 3 1981 1   3   16   48   28
# 4 1981 1   4   19   50   21
# 5 1981 2   1   17   49   25
# 6 1981 2   2   20   47   23
# 7 1981 2   3   21   52   27

The attached .png image file shows you how to send plain text emails to r-help 
using gmail.

-
David L Carlson
Department of Anthropology
Texas A University
College Station, TX 77840-4352

-Original Message-
From: R-help [mailto:r-help-boun...@r-project.org] On Behalf Of lily li
Sent: Wednesday, May 24, 2017 12:30 PM
To: R mailing list <r-help@r-project.org>
Subject: [R] about combining two dataframes

Hi all,

I have a question about combining two data frames. For example, there are
the two dataframes below, with the same structure but different column
names and column lengths. How to add the values in DF2 to the end of DF1,
though the column names do not match? How to add more than two? Thanks.

DF1
year   month   day   product1   product2   product3
1981 1  1 18  5620
1981 1  2 19  4522
1981 1  3 16  4828
1981 1  4 19  5021

DF2
yr mon  d prodprod2   prod3
1981 2  1 17  4925
1981 2  2 20  4723
1981 2  3 21  5227

I use the code below but it does not work.
require(dplyr)
bind_rows(DF1, DF2) or bind_cols(DF1, DF2)

[[alternative HTML version deleted]]

__
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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] about combining two dataframes

2017-05-24 Thread lily li
Hi all,

I have a question about combining two data frames. For example, there are
the two dataframes below, with the same structure but different column
names and column lengths. How to add the values in DF2 to the end of DF1,
though the column names do not match? How to add more than two? Thanks.

DF1
year   month   day   product1   product2   product3
1981 1  1 18  5620
1981 1  2 19  4522
1981 1  3 16  4828
1981 1  4 19  5021

DF2
yr mon  d prodprod2   prod3
1981 2  1 17  4925
1981 2  2 20  4723
1981 2  3 21  5227

I use the code below but it does not work.
require(dplyr)
bind_rows(DF1, DF2) or bind_cols(DF1, DF2)

[[alternative HTML version deleted]]

__
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.