我想从两个不同的 Dataframe 中减去。我有一个 Dataframe 中有信息,另一个有“参考点”。
我有一个 Dataframe DF 1,其中包含此信息。
| 姓名|关键词|细胞粘附分子12 A|ACA1|右旋糖酐2|
| - ------|- ------|- ------|- ------|- ------|
| X_1组1|测试1234|十个|十个|八个|
| X_2组1|测试4553|八个|七|四个|
| X_2组2|测试3341|五个|五个|五个|
| X_2组1|测试2142|五个|六个|八个|
| X_1组2|测试4722|六个|七|四个|
使用DF 1,我想将DF 2(下面)的行减去特定行中的值,但是基于第一列的数值匹配。
例如,基于下面的DF 2,我在DF2$Name中有一个字符串X_1_group1。在DF 1中,第一行的第一列中有相同的字符串。由于名称匹配,我将从DF 2中的DF 1的该行中减去该行中的值。请注意,DF 1中可能有多个字符串具有相同的名称,因此我希望能够以这种方式匹配名称。
| 姓名|关键词|细胞粘附分子12 A|ACA1|右旋糖酐2|
| - ------|- ------|- ------|- ------|- ------|
| X_1组1|X_1组1_A|第二章|第二章|1个|
| X_2组1|X_1组1_B|1个|三个|1个|
| X_1组2|X_1组1_C|第二章|第二章|三个|
| X_2组2|X_1组1_D|第二章|1个|第二章|
DF 3(这是目标)-第二列,通过不同将保持相同的匹配DF 1。
| 姓名|关键词|细胞粘附分子12 A|ACA1|右旋糖酐2|
| - ------|- ------|- ------|- ------|- ------|
| X_1组1|测试1234|八个|八个|七|
| X_2组1|测试4553|七|四个|三个|
| X_2组2|测试3341|三个|四个|三个|
| X_2组1|测试2142|四个|三个|七|
| X_1组2|测试4722|四个|五个|1个|
任何关于减法的两个数据框的名称匹配的帮助都将非常感谢。我还想概括这一点,将有比这个例子更多的列,所以任何考虑到这一部分的东西也会有很大的帮助!感谢任何帮助!
# DF1
Name <- c("X_1_group1", "X_2_group1", "X_2_group2", "X_2_group1", "X1_group2")
Key <- c("test1234", "test4553", "test3341", "test2142", "test4722")
BCD12A <- c(10, 8, 5, 5, 6)
ACA1 <- c(10, 7, 5, 6, 7)
DEX2 <- c(8, 4, 5, 8, 4)
DF1 <- data.frame(Name, Key, BCD12A, ACA1, DEX2)
# DF2
Name <- c("X_1_group1", "X_2_group1", "X_1_group2", "X_2_group2")
Key <- c("X_1_group1_A", "X_1_group1_B", "X_1_group1_C", "X_1_group1_D")
BCD12A <- c(2, 1, 2, 2)
ACA1 <- c(2, 3, 2, 1)
DEX2 <- c(1, 1, 3, 2)
DF2 <- data.frame(Name, Key, BCD12A, ACA1, DEX2)
1条答案
按热度按时间cu6pst1q1#
我们可以使用'Key'连接并减去相应的数字列。使用
powerjoin
,我们可以选择在有conflict
ing名称(常用名称)的地方获得差值(-
)或者使用
data.table
连接