在R中重新编码分类变量并重塑数据帧
我有一个包含许多个体等位基因数据的数据框。在两列中列出了一个基因的几个(>20)独特等位基因。我想将唯一等位基因的1个拷贝的存在数为1,2个拷贝数为2,缺失数为0。此外,每个个体的每个独特等位基因计数应在单独的列中 我现在的df是在R中重新编码分类变量并重塑数据帧,r,R,我有一个包含许多个体等位基因数据的数据框。在两列中列出了一个基因的几个(>20)独特等位基因。我想将唯一等位基因的1个拷贝的存在数为1,2个拷贝数为2,缺失数为0。此外,每个个体的每个独特等位基因计数应在单独的列中 我现在的df是 ID allele_1 allele_2 01 A01 A02 02 A01 A07 03 A08 A03 04 A103 A01 05 A09
ID allele_1 allele_2
01 A01 A02
02 A01 A07
03 A08 A03
04 A103 A01
05 A09 A08
06 A02 A02
07 A08 A08
我希望我的df看起来像这样
ID A01 A02 A07 A08 A03 A103 A09
01 1 1 0 0 0 0 0
02 1 0 1 0 0 0 0
03 0 0 0 1 1 0 0
04 1 0 0 0 0 1 0
05 0 0 0 1 0 0 1
06 0 2 0 0 0 0 0
07 0 0 0 2 0 0 0
我们可以转换为“长”格式,获得“计数”,然后再重塑为“宽”
library(dplyr)
library(tidyr)
df1 %>%
pivot_longer(cols = -ID) %>%
count(ID, value) %>%
pivot_wider(names_from = value, values_from = n, values_fill = list(n = 0))
# A tibble: 7 x 8
# ID A01 A02 A07 A03 A08 A103 A09
# <int> <int> <int> <int> <int> <int> <int> <int>
#1 1 1 1 0 0 0 0 0
#2 2 1 0 1 0 0 0 0
#3 3 0 0 0 1 1 0 0
#4 4 1 0 0 0 0 1 0
#5 5 0 0 0 0 1 0 1
#6 6 0 2 0 0 0 0 0
#7 7 0 0 0 0 2 0 0
或者使用
从重塑2
library(reshape2)
recast(df1, id.var = 'ID', ID ~ value, length)
数据
df1我们可以转换为“长”格式,获得“计数”,然后再重塑为“宽”
library(dplyr)
library(tidyr)
df1 %>%
pivot_longer(cols = -ID) %>%
count(ID, value) %>%
pivot_wider(names_from = value, values_from = n, values_fill = list(n = 0))
# A tibble: 7 x 8
# ID A01 A02 A07 A03 A08 A103 A09
# <int> <int> <int> <int> <int> <int> <int> <int>
#1 1 1 1 0 0 0 0 0
#2 2 1 0 1 0 0 0 0
#3 3 0 0 0 1 1 0 0
#4 4 1 0 0 0 0 1 0
#5 5 0 0 0 0 1 0 1
#6 6 0 2 0 0 0 0 0
#7 7 0 0 0 0 2 0 0
或者使用从重塑2
library(reshape2)
recast(df1, id.var = 'ID', ID ~ value, length)
数据
df1解决了我的问题!已接受解决方案。解决了我的问题!这些解决方案已被接受。