Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何合并两个csv文件,删除重复项并在R中创建一个新列?_R_Dplyr - Fatal编程技术网

如何合并两个csv文件,删除重复项并在R中创建一个新列?

如何合并两个csv文件,删除重复项并在R中创建一个新列?,r,dplyr,R,Dplyr,这是一个非常简单的问题,但我无法在其他帖子中找到答案。例如: - - 两个csv文件具有相同的列名(例如,名称、电子邮件、状态等)。第一个csv是姓名和电子邮件的主列表。第二个是参加过活动的个人名单。我想合并两个数据帧,删除所有重复的数据帧,然后进行变异,为RSVP==“yes/no”创建一个新列。我猜想您在这个问题中使用了dplyr的一个函数,但不确定它是完全连接()还是内部连接()。举个例子: status names email compan

这是一个非常简单的问题,但我无法在其他帖子中找到答案。例如: - -

两个csv文件具有相同的列名(例如,名称、电子邮件、状态等)。第一个csv是姓名和电子邮件的主列表。第二个是参加过活动的个人名单。我想合并两个数据帧,删除所有重复的数据帧,然后进行变异,为RSVP==“yes/no”创建一个新列。我猜想您在这个问题中使用了dplyr的一个函数,但不确定它是
完全连接()
还是
内部连接()
。举个例子:

  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()