如果在r中加权平均的声明
-
12-12-2019 - |
题
我有一个数百万行长的数据文件,并包含许多组的信息。以下是一个缩写部分:
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) )
. 不隶属于 StackOverflow