我正在尝试通过名为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
答案 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)
。
希望这有帮助!