我有一个包含一个变量“标签”的数据框,并希望基于来自另一个数据框的信息(它也包含“标签”变量)添加另一个变量“性别”。我通常使用match函数,并且正常运行。但是,这一次它将添加变量,但将NA作为值。我想这是一个基本问题,但我找不到解决办法。
df1
label
1 HDJ3
2 K4JS
3 SO25
4 L9HW
df2
label gender
1 SO25 m
2 HDJ3 f
3 L9HW f
4 K4JS m
df1$gender <- df2$gender[match(df1$label, df2$label)]
我想要的是
df1
label gender
1 HDJ3 f
2 K4JS m
3 SO25 m
4 L9HW f
我得到的是
df1
label gender
1 HDJ3 NA
2 K4JS NA
3 SO25 NA
4 L9HW NA
编辑:变量是所有因素。我已经尝试过将它们更改为字符,但这也不起作用。我也尝试过合并功能,但是在这种情况下,数据框完全为空,仅包含变量名。如果有人可以帮助我,我会很高兴。如果在此之前已被要求,请先谢谢并道歉。
** Edit2:数据框的结构显示出变量之间的差异:
> dput(df1)
structure(list(label = structure(c(31L, 25L, 7L, 12L, 15L, 32L,
33L, 24L, 14L, 17L, 1L, 28L, 20L, 6L, 11L, 19L, 9L, 16L, 22L,
37L, 26L, 39L, 34L, 29L, 13L, 5L, 36L, 4L, 18L, 2L, 23L, 30L,
3L, 8L, 35L, 27L, 10L, 38L, 21L), .Label = c("09YG", "0FWR",
"0PZS", "4L78", "56C9", "5B1K", "5CL9", "5RJG", "696K", "8ZOQ",
"92MB", "95KI", "99H5", "9VOZ", "A8KP", "A9ME", "APA5", "BVDN",
"DI7S", "E4MS", "EPTR", "H34H", "HRTI", "JLSK", "K472", "KWWO",
"MHAF", "PSK5", "Q6A4", "S2CK", "S7RU", "SK7H", "SRS8", "TCFS",
"VQFM", "VWV4", "Z1GE", "ZGBU", "ZQZ7"), class = "factor")), row.names = c(NA,
-39L), class = "data.frame")
> dput(df2)
structure(list(label = c("S7RU ", "K472 ", "5CL9 ",
"95KI ", "A8KP ", "-99 ", "SK7H ", "SRS8 ", "JLSK ",
"95KI ", "-99 ", "9VOZ ", "APA5 ", "09YG ", "PSK5 ",
"E4MS ", "5B1K ", "92MB ", "DI7S ", "JLSK ", "696K "
), gender = c(3, 2, 3, 3, 3, 2, 3, 3, 3, 3, 3, 2, 3, 2, 3, 2,
3, 2, 3, 3, 3)), row.names = c(NA, -21L), class = "data.frame")
我看到的问题是第二个变量中的空格。谁能告诉我这来自哪里以及如何解决?