我有一个数百万行长的数据文件,并包含许多组的信息。以下是一个缩写部分:

MARKER      GROUP1_A1   GROUP1_A2   GROUP1_FREQ GROUP1_N    GROUP2_A1   GROUP2_A2   GROUP2_FREQ GROUP2_N
rs10    A   C   0.055   1232    A   C   0.055   3221
rs1000  A   G   0.208   1232    A   G   0.208   3221
rs10000 G   C   0.134   1232    C   G   0.8624  3221
rs10001 C   A   0.229   1232    A   C   0.775   3221
.

我想创建频率(频率)变量的加权平均值(其本身是简单的),但在这种情况下,一些行被不匹配(行3&4)。如果字母不排列,则需要在计算该标记的加权平均值之前将第二组的频率减去1。

我想设置一个简单的if语句,但我不确定这样的任务的语法。

任何洞察或方向都赞赏!

有帮助吗?

解决方案

假设您在名为mydata的数据框中读取了您的数据。然后执行以下操作:

mydata$GROUP2_FREQ <- mydata$GROUP2_FREQ - (mydata$GROUP1_A1 != mydata$GROUP2_A1)
. 它有效,因为R将真值视为1和假值作为0。

编辑:尝试以下内容:

mydata$GROUP2_FREQ <- abs( (as.character(mydata$GROUP1_A1) != 
                            as.character(mydata$GROUP2_A1)) -                   
                          as.numeric(mydata$GROUP2_FREQ) )
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top