合并R合并数据中的两行并删除重复项

合并R合并数据中的两行并删除重复项,r,database,csv,data-cleaning,R,Database,Csv,Data Cleaning,我正在清理一个包含电子邮件及其各自信息的数据库。有些电子邮件出现多次,但从一行到另一行的信息是互补的。所以我想用email作为键来组合这些行。并删除电子邮件,以防信息重复 我的数据库是一个csv文件,使用read.csv将其转换为数据帧 输入 EMAIL Country Gender Language 1 y@y.com US S 2 z@z.com AR female

我正在清理一个包含电子邮件及其各自信息的数据库。有些电子邮件出现多次,但从一行到另一行的信息是互补的。所以我想用email作为键来组合这些行。并删除电子邮件,以防信息重复

我的数据库是一个csv文件,使用read.csv将其转换为数据帧

输入

  EMAIL     Country     Gender        Language
1 y@y.com   US                           S
2 z@z.com   AR           female          S
3 z@z.com                female          
4 s@f.com   US           female          E
4 s@f.com   US           female          E
5 y@y.com   US           male
  EMAIL     Country     Gender        Language
1 y@y.com   US           male            S
2 z@z.com   AR           female          S
3 s@f.com   US           female          E
输出

  EMAIL     Country     Gender        Language
1 y@y.com   US                           S
2 z@z.com   AR           female          S
3 z@z.com                female          
4 s@f.com   US           female          E
4 s@f.com   US           female          E
5 y@y.com   US           male
  EMAIL     Country     Gender        Language
1 y@y.com   US           male            S
2 z@z.com   AR           female          S
3 s@f.com   US           female          E

我们可以使用
dplyr
。通过“电子邮件”分组后,使用
summary\u all

library(dplyr)
df %>%
   group_by(EMAIL) %>%
   summarise_all(funs(unique(.[.!='']))) 
# A tibble: 3 x 4
# Groups: EMAIL [3]
#  EMAIL   Country Gender Language
#  <chr>   <chr>   <chr>  <chr>   
#1 y@y.com US      male   S       
#2 z@z.com AR      female S       
#3 s@f.com US      female E
库(dplyr)
df%>%
分组人(电子邮件)%>%
总结所有(funs(唯一(.!=''))
#一个tibble:3x4
#分组:电邮[3]
#电子邮件国家性别语言
#             
#1 y@y.com美国男性
#2 z@z.comAR女性S
#3 s@f.com美国女性E
数据
df我们可以使用
dplyr
。通过“电子邮件”分组后,使用
summary\u all

library(dplyr)
df %>%
   group_by(EMAIL) %>%
   summarise_all(funs(unique(.[.!='']))) 
# A tibble: 3 x 4
# Groups: EMAIL [3]
#  EMAIL   Country Gender Language
#  <chr>   <chr>   <chr>  <chr>   
#1 y@y.com US      male   S       
#2 z@z.com AR      female S       
#3 s@f.com US      female E
库(dplyr)
df%>%
分组人(电子邮件)%>%
总结所有(funs(唯一(.!=''))
#一个tibble:3x4
#分组:电邮[3]
#电子邮件国家性别语言
#             
#1 y@y.com美国男性
#2 z@z.comAR女性S
#3 s@f.com美国女性E
数据
df我们也可以使用
aggregate
作为基本R选项:

df_out <- aggregate(x=df, by=list(df$EMAIL), function(x) { max(x, na.rm=TRUE) })
df_out[order(df_out$EMAIL), -1]

    EMAIL Country Gender Language
1 s@f.com      US female        E
2 y@y.com      US   male        S
3 z@z.com      AR female        S

我们也可以使用
聚合
作为基本R选项:

df_out <- aggregate(x=df, by=list(df$EMAIL), function(x) { max(x, na.rm=TRUE) })
df_out[order(df_out$EMAIL), -1]

    EMAIL Country Gender Language
1 s@f.com      US female        E
2 y@y.com      US   male        S
3 z@z.com      AR female        S

如果某个字段的电子邮件密钥全部为NA,则此操作失败。如果某个字段的电子邮件密钥全部为NA,则此操作失败。