如何合并两个csv文件,删除重复项并在R中创建一个新列?
这是一个非常简单的问题,但我无法在其他帖子中找到答案。例如: - - 两个csv文件具有相同的列名(例如,名称、电子邮件、状态等)。第一个csv是姓名和电子邮件的主列表。第二个是参加过活动的个人名单。我想合并两个数据帧,删除所有重复的数据帧,然后进行变异,为RSVP==“yes/no”创建一个新列。我猜想您在这个问题中使用了dplyr的一个函数,但不确定它是如何合并两个csv文件,删除重复项并在R中创建一个新列?,r,dplyr,R,Dplyr,这是一个非常简单的问题,但我无法在其他帖子中找到答案。例如: - - 两个csv文件具有相同的列名(例如,名称、电子邮件、状态等)。第一个csv是姓名和电子邮件的主列表。第二个是参加过活动的个人名单。我想合并两个数据帧,删除所有重复的数据帧,然后进行变异,为RSVP==“yes/no”创建一个新列。我猜想您在这个问题中使用了dplyr的一个函数,但不确定它是完全连接()还是内部连接()。举个例子: status names email compan
完全连接()
还是内部连接()
。举个例子:
status names email company
1 invited John Smith john@email.com Company A
2 invited Abbi Maureen abbi@email.com Company B
3 invited Sara Doe Sara@email.com Company C
4 invited Maria Gonzalez maria@email.com Company D
5 invited Frank Russell frank@email.com Company E
第二个csv是确认其出席的个人列表,其状态标记为RSVP
status names email company
1 RSVP Abbi Maureen abbi@email.com company B
2 RSVP John Smith john@email.com Company A
我一直在决定如何最好地合并这两个数据帧,删除任何重复项,然后创建一个新列(即RSVP yes no)?它会是完全加入然后变异吗?因此我认为邀请数据帧(我们称之为df1)拥有您想要的大部分数据,并且您希望从RSVPs数据帧(我们称之为df2)添加特定的新唯一信息。您需要识别一个键,以便在df1和df2之间形成人行横道。在这种情况下,电子邮件是唯一的密钥。现在,把解决方案放在一起 首先获取要添加的密钥和新信息
df2<-df2 %>%
select(email, status)
df2%
选择(电子邮件、状态)
然后进行左连接,并进行变异以使用RSVP创建新列
merged_df<-df1 %>%
left_join(df2, by="email") %>%
mutate(RSVP=if_else(status=="RSVP","yes","no"))
merged_df%
左加入(df2,by=“email”)%>%
变异(RSVP=if_else(状态==“RSVP”、“是”、“否”))
或者,您可以通过右连接一步完成所有操作
merge_df<-df2 %>%
select(email, status) %>%
right_join(df1, by="email") %>%
mutate(RSVP=if_else(status=="RSVP","yes","no"))
merge_df%
选择(电子邮件、状态)%>%
右键加入(df1,by=“email”)%>%
变异(RSVP=if_else(状态==“RSVP”、“是”、“否”))
如果打算在第一个数据集中创建一列,您可以使用left\u join
我不清楚最终结果应该是什么。哪些重复项应该删除,哪些数据集需要新列?@cory您可以有两个同名的人。最好通过电子邮件发送,电子邮件必须是唯一的。最初的目的是合并两个数据帧。这样做将创建重复的姓名(即,主列表中的一个人和RSVP的同一个人)。我刚刚试过,我不确定left\u join
是否解决了这个问题。请注意,使用right\u join()