R语⾔合并data.frame
sccm
Merging Data
Adding Columns
To merge two data frames (datats) horizontally, u the merge function. In most cas, you join two data frames by one or more common key variables (i.e., an inner join).
# merge two data frames by IDbromine
total <- merge(data frameA,data frameB,by="ID") #by指定的列中的值必须是唯⼀的,不能重复出现两⾏有相同的ID
# merge two data frames by ID and Country
total <- merge(data frameA,data frameB,by=c("ID","Country")) #by指定的列中的值必须是唯⼀的,不能重复出现两⾏有相同的ID
Inner join:merge(df1, df2) will work for the examples becau R automatically joins the frames by co
mmon variable names, but you would most likely want to specify merge(df1, df2, by="CustomerId") to make sure that you were matching on only the fields you desired. You can also u the by.x and by.y parameters if the matching variables have different names in the different data frames.
scenery什么意思Outer join:merge(x = df1, y = df2, by = "CustomerId", all = TRUE) #by指定的列中的值必须是唯⼀的,不能重复出现两⾏有相同的ID
Left outer:merge(x = df1, y = df2, by = "CustomerId", all.x=TRUE) #by指定的列中的值必须是唯⼀的,不能重复出现两⾏有相同的ID
Right outer:merge(x = df1, y = df2, by = "CustomerId", all.y=TRUE) #by指定的列中的值必须是唯⼀的,不能重复出现两⾏有相同的ID
Cross join:merge(x = df1, y = df2, by = NULL) #by指定的列中的值必须是唯⼀的,不能重复出现两⾏有相同的ID
>>>>>> df2 = data.frame(CustomerId=c(2,4,6),State=c(rep("Alabama",2),rep("Ohio",1)))
> df1
CustomerId Product
dolls1 1 Toaster
2 2 Toaster
3 3 Toaster
4 4 Radio
5 5 Radio
6 6 Radiotoo to
> df2
marinecorpsCustomerId State
delicate1 2 Alabama
2 4 Alabama
3 6 Ohio
> merge(df1, df2, all=TRUE)
CustomerId Product State
1 1 Toaster <NA>
2 2 Toaster Alabama
3 3 Toaster <NA>
4 4 Radio Alabama
5 5 Radio <NA>truetype
6 6 Radio Ohio
> merge(df1, df2, all.x=TRUE)
CustomerId Product State
1 1 Toaster <NA>
2 2 Toaster Alabama
3 3 Toaster <NA>
4 4 Radio Alabama
5 5 Radio <NA>
短篇英语故事6 6 Radio Ohio
> merge(df1, df2, all.y=TRUE)
CustomerId Product State
1 2 Toaster Alabama
2 4 Radio Alabama
3 6 Radio Ohio
amu
>>>>>>>##de <- merge(d, e, by=0, all=TRUE) # merge by row names (by=0 or by="row.names") REF: