我有一个带变量的数据框,该等级出现多次,第二个数据框包含该变量唯一等级的代码。我想在我的数据帧中添加一个包含代码的列。最好通过一个例子说明这一点:
f1 <- rep(c("A","B","C"), each = 3)
df1 <- data.frame(f1,v1=runif(9))
f1 v1
1 A 0.83523506
2 A 0.13833162
3 A 0.15354252
4 B 0.62046499
5 B 0.27823892
6 B 0.04629973
7 C 0.85571269
8 C 0.10963561
9 C 0.70576556
df2 <- data.frame(f1=c("A","B","C"), n1=c("sp1","sp2","sp3") )
f1 n1
1 A sp1
2 B sp2
3 C sp3
df3 <- data.frame(f1=rep(c("A","B","C"),each = 3),n1=rep(c("sp1","sp2","sp3"),each =3),v1=df1$v1)
f1 n1 v1
1 A sp1 0.83523506
2 A sp1 0.13833162
3 A sp1 0.15354252
4 B sp2 0.62046499
5 B sp2 0.27823892
6 B sp2 0.04629973
7 C sp3 0.85571269
8 C sp3 0.10963561
9 C sp3 0.70576556
我想找一个获取df3的函数。
答案 0 :(得分:0)
有很多方法
使用基函数merge
很简单
merge(df1,df2)
这是另一个使用dplyr
library(dplyr)
df1 %>%
left_join(df2)
# f1 v1 n1
#1 A 0.2283936 sp1
#2 A 0.3709602 sp1
#3 A 0.2508059 sp1
#4 B 0.5654418 sp2
#5 B 0.3206994 sp2
#6 B 0.2529365 sp2
#7 C 0.7200121 sp3
#8 C 0.5247517 sp3
#9 C 0.1914874 sp3
我的号码与您的号码不同,因为您没有使用set.seed
来设置随机数生成