#问题#我有2个数据帧。 1个数据帧(A)有多列。数据框A中的第1列具有电子邮件地址,其中多行具有相同的电子邮件地址。另一个数据框(B)在第1列和第2列中有一个唯一的电子邮件地址列表,表示该电子邮件在数据框A的列表中出现的次数。我想基本上执行vlookup,以便在电子邮件地址匹配的任何地方从两个表中,它会将计数拉入数据帧A的新列。任何人都可以提供帮助吗?
Table A
Column 1 Column 2 Column 3
a@a.com home 123
a@a.com house 456
b@b.com tree 221
Table B
Column 1 Column 2(Count)
a@a.com 2
b@b.com 1
Expected result should be Table A with an additional column:
Column 1 Column 2 Column 3 Column 4
a@a.com home 123 2
a@a.com house 456 2
b@b.com tree 221 1
答案 0 :(得分:2)
您不需要df2来获取计数。您可以单独使用df1来获取计数:
#solution using data.table package
library(data.table)
setDT(df1)[,count:=.N,by=Column1]
Column1 Column2 Column3 count
1: a@a.com home 123 2
2: a@a.com house 456 2
3: b@b.com tree 221 1
#solution using dplyr package
library(dplyr)
df1 %>%
group_by(Column1)%>%
mutate(count=n())
Source: local data frame [3 x 4]
Groups: Column1
Column1 Column2 Column3 count
1 a@a.com home 123 2
2 a@a.com house 456 2
3 b@b.com tree 221 1
#Data
df1<-structure(list(Column1 = structure(c(1L, 1L, 2L), .Label = c("a@a.com",
"b@b.com"), class = "factor"), Column2 = structure(1:3, .Label = c("home",
"house", "tree"), class = "factor"), Column3 = c(123L, 456L,
221L)), .Names = c("Column1", "Column2", "Column3"), class = "data.frame", row.names = c(NA,
-3L))