각 행에 대해 0이 아닌 모든 열 이름 목록을 포함하는 변수를 작성하려고합니다. 데이터데이터 프레임의 각 행에 0이 아닌 열 이름이있는 변수를 반환하십시오.
예 :
set.seed(334)
DF <- matrix(sample(0:9,9),ncol=4,nrow=10)
DF <- as.data.frame.matrix(DF)
DF$id <- c("ty18","se78","first", "gh89", "sil12","seve","aga2", "second","anotherX", "CH560")
DF$count <- rowSums(DF[,2:5]>0)
DF
> V1 V2 V3 V4 id count
> 1 9 4 0 5 ty18 3
> 2 4 0 5 8 se78 3
> 3 0 5 8 2 first 4
> 4 5 8 2 6 gh89 4
> 5 8 2 6 7 sil12 4
> 6 2 6 7 3 seve 4
> 7 6 7 3 9 aga2 4
> 8 7 3 9 4 second 4
> 9 3 9 4 0 anotherX 3
> 10 9 4 0 5 CH560 3
원하는 출력은 로우 1 않은 새로운 변수 일 것이다 "V1 V2 V4"및 로우 2 "V1 V3 V4"에 대한. 나는 V1-V4 만 사용하고 싶은데, ID 나 카운트는 고려하지 않았다.
SO 도움에이 질문 : For each row return the column name of the largest value
내가 이것을 테스트하려고했으나 첫 번째 테스트는 여기에 단지 전체 행의 최대를 제공합니다 그래서, 심지어 최대를 들어, 내 선택 열을 무시하지 않습니다 내 데이터에서 항상 V1-V4에 있습니다. 오류에도 불구하고
DF$max <- colnames(DF)[apply(DF[,1:4],1,which.max)]
, 나는 내가 같은 것을 할 필요가 있다고 생각하지만, 내 DF $리스트 시도는 분명히 모든 잘못 :
DF$list <- colnames(DF[,1:4]>0)
내가
Error in `$<-.data.frame`(`*tmp*`, "list", value = c("V1", "V2", "V3", :
replacement has 4 rows, data has 10
받고 있어요 어쩌면 벡터를 셀에 넣으려고하는 것일 수 있습니다. 따라서 그것이 작동하지 않는 이유입니다. 그러나이 정보를 가져 와서 문자열로 만드는 방법을 모르겠습니다. 또한 선택 열의 최대 값이 작동하지 않는 이유를 이해하지 못합니다. simplify2array -
에 대해, 데이터 프레임의 열 부분 집합의 최대의 이름을 얻기를 위해 제공 @orizon 솔루션은'여기 DF $ 최대 <얼마나 ([1, 4, 1, 함수 (X) 이름 (DF DF 는 [4,1] (적용) which.max (X)] ) )' – jessi