それぞれ5つのx値(A、B、C、D、E)を持つ10の変数(ID1 - 1D10) :私は単に持っている。このデータフレームからの行のみをつかむしようとしていますRに特定の列値を持つ行を選択すると、結果に行がありません
x variable value
1: A ID1 0.2655087
2: B ID1 0.2059746
3: C ID1 0.9347052
4: D ID1 0.4820801
5: E ID1 0.8209463
6: A ID2 0.3721239
7: B ID2 0.1765568
:
library(plotly)
library(data.table)
set.seed(1)
dat <- data.frame(ID = paste0("ID",1:10), A = runif(10), B = runif(10), C = runif(10), D = runif(10), E = runif(10))
dat$ID <- as.character(dat$ID)
datt <- data.frame(t(dat))
names(datt) <- as.matrix(datt[1, ])
datt <- datt[-1, ]
datt[] <- lapply(datt, function(x) type.convert(as.character(x)))
setDT(datt, keep.rownames = TRUE)[]
colnames(datt)[1] <- "x"
dat_long <- melt(datt, id.vars ="x")
これは、次の形式(これはそれの最初の7行である)でデータフレームを作成し、 ID1またはID2の可変値。これは10行になります(各IDは5つのx値A、B、C、D、Eを持つため)。ただし、実行時に:
dat_long[dat_long$variable==c("ID1","ID2"),]
私は6行しか受け取りません。具体的には、私は5のxの値(A、C、E)の3を受け取る:
x variable value
1: A ID1 0.2655087
2: C ID1 0.9347052
3: E ID1 0.8209463
4: A ID2 0.3721239
5: C ID2 0.2121425
6: E ID2 0.6470602
Iは次のように文字に因子からのデータフレームの変数列を変更しようとした:
しかし、これとまったく同じ問題が発生します。 which()コマンドを実行すると、同じ問題が引き続き発生します。
この問題を解決する方法はありますか?私が行うとき:
str(c("ID1","ID2"))
私は、次を得る:
chr [1:2] "ID1" "ID2"
私はおそらくすぐに上記の形式でのIDの鍵を維持する必要があります。理由は、Shinyアプリケーションを使用しているため、IDキーの入力値はこの形式です。 IDキーは、異なる組み合わせと数字である場合もあります。たとえば、入力には3つのID(例:c( "ID1"、 "ID2"、 "ID5"))があります。したがって、私は上記の形式の文字配列をIDキーとして使用して解決策を導き出す必要があります。
アドバイスをいただければ幸いです!
を... '%%で、C( "ID1"、 "ID2")' – bergant