私の配列を操作する必要があります。 私はすべての結果を含む配列の呼び出しres
を持っています。 入力のすぐ下に表示されます。アレイ操作と名前によるデータの抽出
RT Max blk24 blk23 mat23 sm23 sm24
1 1.6 261 13 19 19 27 20
2 1.6 284 NA 53 5 99 91
3 1.7 304 NA NA NA 81 NA
4 1.8 305 32 28 28 39 33
5 1.9 322 8 NA NA 36 39
6 1.9 349 NA NA NA 24 17
7 2 389 1 3 NA 50 NA
8 2.1 393 80 70 7 12 71
9 2.1 622 NA NA 15 97 96
10 2.2 705 NA NA NA NA 32
は、私がここにblk
、およびsm
とそれ自体で価値の基準をしている列名に応じて自分のデータを抽出したいです。
blk
のために私はそのように行うことを提案する:
whereblk<- grep("^Blk", colnames(res))
for (i in 1:length(res)){
tmp.res<-res[which(res[whereblk]>0),]
}
私は私のすべてのRT
とMax
値blk>0
を与える出力を取得します。
次に、sm
列から値を抽出したいと思います。 blk=NA
とmat=NA
の場合、sm
の値を抽出したいと思います。
手がかりはありますか?
マイ所望の出力である:Excelを使用してそれを行うに
RT Max sm23 sm24
1
2
3 1.7 304 81 NA
4
5
6 1.9 349 24 17
7
8
9
10 2.2 705 NA 32
、それは続いて式を使用することが可能である、=(COUNTIF(BLK IF:BLK、 "> 0")、 " - "、 sm)。 Excelの問題は、たとえばblk
の列数が変更された場合など、自動的には使用できません。
ここでの難しさは、列の位置を名前に従ってローカライズする式を使用することです。私はまだマスターではない何かである2つの基準に従って価値を抽出する。
ご意見がありましたら、大歓迎です。
はdput 'の出力を追加します。 (res) 'を呼び出すことで、他の人が配列を再作成できるようにします。コマンド 'subset'も参照してください。 – TomNash
正確に言うのは本当に難しいですが、 'nams < - grepl(" blk | mat "、names(res)); res [rowSums(is.na(res [nams]))== sum(nams)、] 'それは? – thelatemail