gpt4 book ai didi

r - 匹配 2 个不同数据帧之间的行值组合

转载 作者:行者123 更新时间:2023-12-02 09:23:10 25 4
gpt4 key购买 nike

我有一个 data.frame,其中包含 4 种不同细胞标记的 16 种不同组合

combinations_df

FITC Cy3 TX_RED Cy5
a 0 0 0 0
b 1 0 0 0
c 0 1 0 0
d 1 1 0 0
e 0 0 1 0
f 1 0 1 0
g 0 1 1 0
h 1 1 1 0
i 0 0 0 1
j 1 0 0 1
k 0 1 0 1
l 1 1 0 1
m 0 0 1 1
n 1 0 1 1
o 0 1 1 1
p 1 1 1 1

我的“主”data.frame 有 10 列和数千行。

> main_df
a b FITC d Cy3 f TX_RED h Cy5 j
1 0 1 1 1 1 0 1 1 1 1
2 0 1 0 1 1 0 1 0 1 1
3 1 1 0 0 0 1 1 0 0 0
4 0 1 1 1 1 0 1 1 1 1
5 0 0 0 0 0 0 0 0 0 0
....

我想使用 combinations_df 中所有可能的 16 种组合来与 main_df 的每一行进行比较。然后我想创建一个新的向量,以便稍后cbindmain_df作为第11列。

示例输出

> phenotype
[1] "g" "i" "a" "p" "g"

我考虑在 for 循环中执行 while 循环,检查每个 main_df 行中的每个 combinations_df 行。

听起来好像可行,但我在 main_df 中有接近 1 000 000 行,所以我想看看是否有人有更好的主意。

编辑:我忘了提及,我只想将 combinations_dfmain_df 中的第 3、5、7、9 列进行比较。他们有相同的名字,但可能不那么明显。

编辑:更改示例数据输出,因为不应出现“t”

最佳答案

dplyr 解决方案非常简单。首先,您需要将phenotype作为显式变量放入combinations_df中,如下所示:

#   phenotype FITC Cy3 TX_RED Cy5
#1 a 0 0 0 0
#2 b 1 0 0 0
#3 c 0 1 0 0
#4 d 1 1 0 0
# etc

dplyr 允许您连接多个变量,因此从这里开始只需一行即可查找表型。

library(dplyr)
left_join(main_df, combinations_df, by=c("FITC", "Cy3", "TX_RED", "Cy5"))

# a b FITC d Cy3 f TX_RED h Cy5 j phenotype
#1 0 1 1 1 1 0 1 1 1 1 p
#2 0 1 0 1 1 0 1 0 1 1 o
#3 1 1 0 0 0 1 1 0 0 0 e
#4 0 1 1 1 1 0 1 1 1 1 p
#5 0 0 0 0 0 0 0 0 0 0 a

我最初认为您必须使用 tidyr::unite 连接列,但事实并非如此。

关于r - 匹配 2 个不同数据帧之间的行值组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40184661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com