我有一些数据文件,我从这些文件中生成数据数据框,如下所示:
V1 V2 V3 V4 V5 V6 V7
1 bb A <NA> <NA> P <NA> M
2 chemokine (C-C motif) ligand 5 P <NA> <NA> <NA> <NA> <NA>
3 discoidin domain receptor tyrosine kinase 1 M <NA> A <NA> <NA> P
4 heat shock 70kDa protein 6 (HSP70B') A <NA> <NA> <NA> <NA> <NA>
5 paired box 8 P P P <NA> P <NA>
6 replication factor C (activator 1) 2, 40kDa P <NA> <NA> <NA> <NA> <NA>
7 ubiquitin-like modifier activating enzyme 7 P <NA> <NA> P <NA> P
在生成数据框架V3
期间,它会创建我不想生成的NA's
。我知道我可以通过data[!is.na(data)]
删除它们但我希望有一个控件。我想知道有没有办法做到这一点。
第二件事是我想按(V1)
的顺序排列没有第一列P , A , M
的行。我知道我可以按升序或降序排序,但我想要上面说的订单模式。怎么做。提前谢谢。
编辑:预期输出
V1 V2 V3 V4 V5 V6 V7
1 bb P A M <NA> <NA> <NA>
2 chemokine (C-C motif) ligand 5 P <NA> <NA> <NA> <NA> <NA>
3 discoidin domain receptor tyrosine kinase 1 P A M <NA> <NA> <NA>
4 heat shock 70kDa protein 6 (HSP70B') A <NA> <NA> <NA> <NA> <NA>
5 paired box 8 P P P P <NA> <NA>
6 replication factor C (activator 1) 2, 40kDa P <NA> <NA> <NA> <NA> <NA>
7 ubiquitin-like modifier activating enzyme 7 P P P <NA> <NA> <NA>
示例:在第一次迭代中,我得到这样的
V1 V2
1 bb P
2 chemokine (C-C motif) ligand 5 P
3 discoidin domain receptor tyrosine kinase 1 P
4 heat shock 70kDa protein 6 (HSP70B') A
5 paired box 8 P
6 replication factor C (activator 1) 2, 40kDa P
7 ubiquitin-like modifier activating enzyme 7 P
现在,当基因bb
的条目如下所示时
V1 V2 V3
1 bb P A
2 chemokine (C-C motif) ligand 5 P
3 discoidin domain receptor tyrosine kinase 1 P
4 heat shock 70kDa protein 6 (HSP70B') A
5 paired box 8 P
6 replication factor C (activator 1) 2, 40kDa P
7 ubiquitin-like modifier activating enzyme 7 P
然后自动将colum V3的其他条目更改为<NA>
,在该列中没有空间用于下面的其他元素:
V1 V2 V3
1 bb P A
2 chemokine (C-C motif) ligand 5 P <NA>
3 discoidin domain receptor tyrosine kinase 1 P <NA>
4 heat shock 70kDa protein 6 (HSP70B') A <NA>
5 paired box 8 P <NA>
6 replication factor C (activator 1) 2, 40kDa P <NA>
7 ubiquitin-like modifier activating enzyme 7 P <NA>
然后当新元素到来时,它在列V3
中找不到任何位置,然后它会创建一个新列来放置新的元素
V1 V2 V3 V4
1 bb P A M
2 chemokine (C-C motif) ligand 5 P <NA>
3 discoidin domain receptor tyrosine kinase 1 P <NA>
4 heat shock 70kDa protein 6 (HSP70B') A <NA>
5 paired box 8 P <NA>
6 replication factor C (activator 1) 2, 40kDa P <NA>
7 ubiquitin-like modifier activating enzyme 7 P <NA>
答案 0 :(得分:0)
如果使用NA
元素为空,则无法重现有关元素获取read.csv
的部分。如果我指定na.strings=''
,则元素将为NA
。将apply
与MARGIN=1
一起使用以循环遍历行,将行元素转换为因子,并按照P
,A
,M
的顺序指定级别。如果存在滞后/前导空格,请在转换为“factor”之前使用gsub
将其删除,排序,转置并将结果分配给选定的列df1[-1] <- t(apply(...)
df1 <- read.csv('file.csv', header=TRUE, stringsAsFactors=FALSE)
df1[-1] <- t(apply(df1[-1], 1, function(x)
sort(factor(gsub('^ +| +$', '', x), levels=c('P', 'A', 'M', '')))))
df1
# V1 V2 V3 V4 V5 V6 V7
#1 bb P A M
#2 chemokine (C-C motif) ligand 5 P
#3 discoidin domain receptor tyrosine kinase 1 P A M
#4 heat shock 70kDa protein 6 (HSP70B') A
#5 paired box 8 P P P P
#6 replication factor C (activator 1) 2, 40kDa P
#7 ubiquitin-like modifier activating enzyme 7 P P P