각각 5 x 값 (A, B, C, D, E)을 갖는 10 개의 변수 (ID1 - 1D10) :R에 특정 열 값이있는 행 선택 : 결과에 행이 누락 됨
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 개 라인이다) 생성 :
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
단순히이이 데이터 프레임 만 행을 잡으려고 노력하고있다 ID1 또는 ID2의 변수 값. 이것은 각 행의 ID가 5 x 값 A, B, C, D, E이므로 10 행을 가져와야합니다. 그러나, 수행시 :
dat_long[dat_long$variable==c("ID1","ID2"),]
나는 6 행만 수신합니다. 즉, I은 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가 문자에 계수의 데이터 프레임의 변수 항목을 변경하려고 :
dat_long$variable = as.character(dat_long$variable)
dat_long[dat_long$variable==c("ID1","ID2"),]
하지만 정확히 동일한 문제가 발생합니다. which() 명령을 실행할 때도 같은 문제가 계속 발생합니다.
which(dat_long$variable==c("ID1","ID2"),)
이 문제를 해결하는 방법에 대한 제안 사항이 있습니까? 내가 할 때 :
str(c("ID1","ID2"))
을 나는 다음과 같은 얻을 :
chr [1:2] "ID1" "ID2"
내가 아마 형식 위의 즉시에 ID의 키를 계속해야합니다. 그 이유는 Shiny 응용 프로그램을 사용하고 ID 키의 입력 값이이 형식이기 때문입니다. ID 키는 다른 조합과 숫자 일 수 있습니다. 예를 들어, 입력에는 세 개의 ID (예 : c ("ID1", "ID2", "ID5"))가있을 수 있습니다. 따라서 위의 형식의 문자 배열을 ID 키에 사용하여 솔루션을 파생시킬 필요가 있습니다.
모든 조언을 크게 높이세요!
...'%의 C ("ID1", "ID2")'에서 % – bergant