我有一个基因组位置ID的遗传数据集,其中2个ID可以在一列中具有共享值。我希望创建另一个列来识别具有共享信息的人员。
例如,我的数据如下所示:
CP Shared_CP
1:10 1:10, 1:11, 1:12
1:20 1:56
1:11 1:11, 1:10, 1:12
1:22 1:21, 1:30
1:30 1:30, 1:21
我希望使用匹配的Shared_CP
信息标记行,并唯一标识每个分组,输出:
CP Shared_CP matches
1:10 1:10, 1:11, 1:12 1
1:20 1:56 NA
1:11 1:11, 1:10, 1:12 1
1:22 1:21, 1:30 2
1:30 1:30, 1:21 2
我看到基于其他列的信息创建新列时也有类似的问题,但我还没有找到一种方法来解决我的问题,目前我一直在尝试根据shared_CP
列中是否有逗号来标记共享信息的行,但我不知道如何为每个匹配项提供唯一的标识符来存储-任何帮助都将不胜感激。
示例输入数据:
structure(list(CP = c("1:10", "1:20", "1:11", "1:22", "1:30"
), Shared_CP = c("1:10, 1:11, 1:12", "1:56", "1:11, 1:10, 1:12", "1:21, 1:30",
"1:30, 1:21")), row.names = c(NA, -5L), class = c("data.table",
"data.frame"))
编辑:为了获得更多详细信息,我的实际数据集可以有多个Shared_CP id,而不仅仅是2个。在一行中,也可能有多个共享_CP输入,其中的CPs不相同/包含在Shared _CPs列中,我修改了示例以反映这一点。
如果我理解正确的话,行动组想要
一种可能的答案是使用<code>数据。表是
library(data.table)
library(magrittr)
DT[, tmp := strsplit(Shared_CP, ", ") %>% unlist() %>% sort() %>% toString(),
by = seq(nrow(DT))][
order(tmp) & tmp %like% ", ", matches := rleid(tmp)][
, tmp := NULL][]
CP Shared_CP matches
1: 1:10 1:10, 1:11, 1:12 1
2: 1:20 1:56 NA
3: 1:11 1:11, 1:10, 1:12 1
4: 1:22 1:21, 1:30 2
5: 1:30 1:30, 1:21 2
这符合OP的预期结果。特别是,OP已将第4行分配给匹配
组2。
对于每一行,Shared_CP
被拆分为多个片段,强制到字符基因组位置的向量,这些位置被排序并再次组合到字符密钥中。该密钥存储在临时列tmp
中。Shared_CPid number匹配
是通过在有序版本的tmp
上应用rleid()
函数创建的,从而跳过tmp
不包含", "
的行,即Shared_CP
仅由一个元素组成。最后,tmp
被删除。
管道(来自软件包magrittr
)和链接(来自data.table
)用于提高可读性。
我有两个熊猫数据框 步骤1:根据df1中唯一的“val”在df2中创建列,如下所示: 步骤2:对于flag=1的行,AA_new将计算为var1(来自df2)*组“A”和val“AA”的df1的'cal1'值*组“A”和val“AA”的df1的'cal2'值,类似地,AB_new将计算为var1(来自df2)*组“A”和val“AB”的df1的'cal1'值*组“A”和val“AB”的df1的'c
我有两个bean类--乡村和城市。我需要在乡村班保留城市名单。另外,当我设置城市信息时,我需要设置国家名称,所以在城市类中也需要国家。怎么做?以下是代码: country.java
我试图在Spark Dataframe中创建一个列,如果列的行位于单独的Dataframe中,则为标志。 这是我的主Spark Dataframe() 这是我的引用(),这个引用中有数百行,所以我显然不能像这个解决方案或这个解决方案那样硬编码它们 我已经尝试了下面的代码,但我不明白图片中的错误是什么意思。
我现在制作了一个arraylist并返回它,就像在一个void中一样。现在我得到了这样的东西,我知道我必须更改静态void t其他东西才能返回它,但我丢失了该版本的代码。 如何使用已填充的列表从一个空到另一个空?问题不在于ArrayList的填充或我在声明ArrayList时犯的任何错误,而在于如何使用返回的列表
我正在尝试将标记对象用于我的flatter插件。使用MethodChannel,我可以调用Java函数,但我的标记对象仍然为null。我如何正确地创建此意图? 我的猜测是不能以这种方式创建意图,这就是为什么它为标记返回空对象的原因。
我有两个pyspark数据帧 DF1 : df2: 我想向df1添加一个列Location_Id,从df2获取匹配的Id,如下所示: 我如何才能做到这一点?