合并R合并数据中的两行并删除重复项
我正在清理一个包含电子邮件及其各自信息的数据库。有些电子邮件出现多次,但从一行到另一行的信息是互补的。所以我想用email作为键来组合这些行。并删除电子邮件,以防信息重复 我的数据库是一个csv文件,使用read.csv将其转换为数据帧 输入合并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 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,则此操作失败。