私はこの種の表をロードした(しかし、多くの、より大きな)している:Rスタジオ.CSVテーブルのサブセット
https://postimg.org/image/66qmiayj5/
誰もが、私はこれのサブセットを作ることができる方法を知っています
- すべての列
- の値は「はい」を持つすべての行のすべての列で「はい」を持つすべての行が、1つの「はい」と「いいえ」
- すべての行で:とテーブルすべての列が、2つの 'いいえ'
- など....
私はこの種の表をロードした(しかし、多くの、より大きな)している:Rスタジオ.CSVテーブルのサブセット
https://postimg.org/image/66qmiayj5/
誰もが、私はこれのサブセットを作ることができる方法を知っています
あなたはrowSums
を使用することができます。あなたの例:
df <- data.frame('GENES'=1:3,'STRAIN_1'=c(TRUE,TRUE,FALSE),'STRAIN_2'=c(TRUE,TRUE,FALSE),'STRAIN_3'=c(TRUE,FALSE,TRUE))
> df
GENES STRAIN_1 STRAIN_2 STRAIN_3
1 1 TRUE TRUE TRUE
2 2 TRUE TRUE FALSE
3 3 FALSE FALSE TRUE
データセットを次のようにサブセット化できます。
> df[rowSums(df[,-1])==1,]
GENES STRAIN_1 STRAIN_2 STRAIN_3
3 3 FALSE FALSE TRUE
> df[rowSums(df[,-1])==2,]
GENES STRAIN_1 STRAIN_2 STRAIN_3
2 2 TRUE TRUE FALSE
df[,-1]
は、最初の列を除外しrowSums(df[,-1])
行あたりTRUE
の数を取得するようにするために使用されることに注意してください。
ありがとう!私はそれを試してみます –
filter
コマンドをdplyr
としてみてください。新しい列を作成せずにこれを行う方法がありますが、私はこのコードで何が起きているのかを明確にしたかったのです。
# Create a sample data frame
df <- rbind(c("Yes", "Yes", "No"),
c("Yes", "Yes", "No"),
c("Yes", "Yes", "No"),
c("Yes", "Yes", "No"),
c("Yes", "No", "No"),
c("Yes", "Yes", "Yes"),
c("Yes", "Yes", "Yes"))
df <- data.frame(df)
# Create a column that counts the number of "No" values
df$count <- rowSums(df[-1] == "No")
# Filter for the appropriate number of "No"
library(dplyr)
df %>% filter(count == 0) # All "Yes"
df %>% filter(count == 1) # One "No"
df %>% filter(count == 2) # Two "No"
ありがとう! –
「dput」データや質問のコードブロックで作成したデータのような再現可能なデータは、スクリーンショットにとって非常に好ましいものです。 –
ようこそStackOverflowへ。これらのヒントを見て、[最小、完全で検証可能な例](http://stackoverflow.com/help/mcve)の作成方法と[Rの素晴らしい例を作成する]( http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。おそらく、[良い質問をする]のヒント(http://stackoverflow.com/help/how-to-ask)も読む価値があるかもしれません。 – lmo
@lmo確かに、完了 –