合并具有不同列数和行数的R DataFrame

时间:2016-03-24 02:50:00

标签: r merge

我正在尝试通过名为username的列组合2个数据帧。一个数据框包含12个变量,其中1619行观察。另一个包含37列,1603个观测值。我想匹配每个数据集的用户名,但保留所有数据。我尝试过合并,但我总是为Y数据集获得NA(除非colname在两组数据中)。有没有办法通过列名称(例如“username?”

)将一组数据附加到另一组数据

以下示例:

DataFrame 1
Username      HighschoolGPA     Age     Applydate
Smith, John   3.1               18      03-12-2012

DataFrame 2
Username    LiveOnCampus        Major       StudentGroup_Academic       
Smith, John  Yes                Chemistry   No              

Final DataFrame
Username HighschoolGPA Age Applydate LiveOnCampus Major StudentGroup_Academic
Smith, John 3.1         18  03-12-2012  Yes     Chemistry   No              

2 个答案:

答案 0 :(得分:1)

df1 <- data.frame(Username='Smith, John',HighschoolGPA=3.1,Age=18,Applydate='03-12-2012',stringsAsFactors=F);
df2 <- data.frame(Username='Smith, John',LiveOnCampus='Yes',Major='Chemistry',StudentGroup_Academic='No',stringsAsFactors=F);
merge(df1,df2,'Username');
##      Username HighschoolGPA Age  Applydate LiveOnCampus     Major StudentGroup_Academic
## 1 Smith, John           3.1  18 03-12-2012          Yes Chemistry                    No

答案 1 :(得分:0)

当合并函数匹配多个列并生成许多唯一组合时,通常会为Y数据集获取NA。

确保用户名列的类型相同,确保它们不是因素,并为合并函数指定更多参数。

如果您想保留所有结果,匹配和不匹配,请尝试merge(df1, df2, by = "username", all.x = TRUE, all.y = TRUE)

如果您只想保留具有匹配用户名的条目,请尝试merge(df1, df2, by = "username", all.x = FALSE, all.y = FALSE)

希望这有帮助!