Here are the sample data.
df1 <- data.frame(y = 1:5, x = c("s", "m", "l", "s", "m"))
df2 <- data.frame(y = 1:4, x = c("s", "l", "s", "l"))
I'd like df2 has three levels based on df1$x.
I tried
df2$x <- factor(df1$x)
Then I've got
Error in `$<-.data.frame`(`*tmp*`, "x", value = c(3L, 2L, 1L, 3L, 2L)) :
replacement has 5 rows, data has 4
or
levels(df2$x) <- factor(df1$x)
then it changes df2.
df2
y x
1 1 m
2 2 s
3 3 m
4 4 s
How can I do it?