REF ALT
AT ATT,A,ATTT
我正在与上面的数据帧工作,需要只包含AT
的REF
列转换成0
的整数,并且然后将含有ATT,A,ATTT
入1,2,3
的柱,我尝试过变形,但它似乎没有工作。R A字符串转换成整数的数据帧中
而且我完全数据帧具有多行,所以我需要循环命令适用于所有的行。
任何帮助,将不胜感激
REF ALT
AT ATT,A,ATTT
我正在与上面的数据帧工作,需要只包含AT
的REF
列转换成0
的整数,并且然后将含有ATT,A,ATTT
入1,2,3
的柱,我尝试过变形,但它似乎没有工作。R A字符串转换成整数的数据帧中
而且我完全数据帧具有多行,所以我需要循环命令适用于所有的行。
任何帮助,将不胜感激
设置REF
列0很简单。
对于专栏中,我认为为了让每个条目的问题,但行是独立的。因此A
可以在一行中编号为1,而在另一行中编号为2(如果该行中有多个条目)。所以我们唯一关心的是每行中的替代品数量。我们可以简单地算来,并生成相应的数字载体,折叠成一个单一的字符串,以在数据帧中的相应条目:
df$ALT <- sapply(strsplit(df$ALT, ","),
function(alt) paste(1:length(alt), collapse=","))
循环中,R是真的效率低下,所以我会强烈建议不要它,如果它不是绝对必要的,你的情况,我不认为这是必要的。
例如,你可以做的,(假设你的数据框被称为“DF”):
df$REF<-0 # from what I gather all rows should be 0
df$ALT2<-1 # a proxy column that you can copy to ALT after
df$ALT2[df$ALT == "A"] <-2 # converts A to 2
df$ALT2[df$ALT == "ATTT"] <-3 # converts ATTT to 2
df$ALT<-df$ALT2 # copy proxy over to ALT
df$ALT2<-NULL #erase proxy column
如果你不关心哪个字符串被分配到哪个号码,但你只是想不同的字符串有不同的intetger,你也可以这样做:
df$REF<-0 # from what I gather all rows should be 0
df$ALT <- as.numeric(factor(df$ALT)) # give a distinct number to each distinct string counting up from 1.
目前还不清楚究竟是什么在你的其他行“完整的数据框“。你能给出更多的行,然后是你想要它们转换成什么样的例子吗?现在的问题无法回答。 –
你有预设的想法,哪些项目应该有哪些数字?还是仅仅是连续做他们?如果ATTT再次出现,应该是3次还是不同的数字? –
其他行在上面将具有相同的格式,REF列总是只有一个值.ACL列将会改变其包含的值的数量。这只是关于他们连续,所以如果ALT行包含AT,A它将成为1,2 ATT,AAA,ATTT将成为1,2,3,如果只有一个只有1 –