我有两个数据框如下:
df1 <- t(data.frame(seq(1,6,by=1),seq(6,1,by=-1)))
colnames(df1) <- c("A","B","C","D","E","F)
rownames(df1) <- c("a","b")
df2 <- data.frame(rep(colnames(df1),2),rep(rownames(df1),6))
colnames(df2) <- c("Vector1","Vector2")
这样
DF1
A B C D E F
a 1 2 3 4 5 6
b 6 5 4 3 2 1
DF2
Vector1 Vector2
A a
B b
C a
D b
E a
F b
A a
B b
C a
D b
E a
F b
我想将df2的列值与df1的列名和行名匹配,并将相应的值填充到df2中的新列,如下所示:
Vector1 Vector2 Newcol
A a 1
B b 5
C a 3
D b 3
E a 5
F b 1
A a 1
B b 5
C a 3
D b 3
E a 5
F b 1
任何建议将不胜感激 . 谢谢 .
1 回答
我们可以将
merge
与melt
一起使用 .melt
返回三列data.frame
,merge
与第二个数据集一起创建新列或者
base R
选项是在'df2' rowwise(do.call(paste
)之后使用match
获取数字索引,并使用outer
获取paste
的paste
列名称和行名称 . 使用数字索引,我们得到'df1'中的值来创建'Newcol'