판독 가능한 방법으로 dplyr 개수의 고유 개수 가져오기
저는 dplyr를 사용하는 것이 처음이라 그룹 내의 고유값을 계산해야 합니다.표 예시는 다음과 같습니다.
data <- data.frame(aa = c(1, 2, 3, 4, NA),
bb = c('a', 'b', 'a', 'c', 'c'))
저는 다음과 같은 일을 할 수 있다는 것을 알고 있습니다.
library(dplyr)
by_bb <- group_by(data, bb, add = TRUE)
summarise(by_bb, mean(aa, na.rm = TRUE), max(aa), sum(!is.na(aa)), length(aa))
하지만 만약 내가 독특한 요소들을 세고 싶다면?
할 수 있습니다.
> summarise(by_bb, length(unique(unlist(aa))))
bb length(unique(unlist(aa)))
1 a 2
2 b 1
3 c 2
NA를 제외하고 싶다면 다음을 수행할 수 있습니다.
> summarise(by_bb,length(unique(unlist(aa[!is.na(aa)]))))
bb length(unique(unlist(aa[!is.na(aa)])))
1 a 2
2 b 1
3 c 1
하지만 저는 조금 읽을 수가 없어요.이런 식의 요약을 하는 더 좋은 방법이 있습니까?
이 옵션은 어떻습니까?
library(magrittr)
data %>% # take the data.frame "data"
filter(!is.na(aa)) %>% # Using "data", filter out all rows with NAs in aa
group_by(bb) %>% # Then, with the filtered data, group it by "bb"
summarise(Unique_Elements = n_distinct(aa)) %>% # Now summarise with unique elements per group
ungroup()
#Source: local data frame [3 x 2]
#
# bb Unique_Elements
#1 a 2
#2 b 1
#3 c 1
사용하다filter
행을 걸러내다aa
NA가 있는 경우 데이터를 열별로 그룹화합니다.bb
열의 고유한 요소의 수를 세어 요약합니다.aa
그룹별로bb
.
보시다시피 저는 파이프 조작자를 이용하고 있습니다.%>%
dplyr를 사용할 때 "파이프" 또는 "체인" 명령을 함께 사용할 수 있습니다.예를 들어 코드를 왼쪽에서 쓰기까지, 위에서 아래로 깊이 중첩되지 않고(예시 코드에서와 같이) 왼쪽에서 아래로 코드를 작성하는 것이 보다 자연스러워서 쉽게 읽을 수 있는 코드를 작성할 수 있습니다.
편집:
질문의 첫 부분에서 다음과 같이 썼습니다.
저는 다음과 같은 일을 할 수 있다는 것을 알고 있습니다.
by_bb<-group_by(data, bb, add = TRUE) summarise(by_bb, mean(aa, na.rm=TRUE), max(aa), sum(!is.na(aa)), length(aa))
이를 위한 다른 옵션이 있습니다(같은 열에 여러 함수 적용).
data %>%
filter(!is.na(aa)) %>%
group_by(bb) %>%
summarise_each(list(mean = mean, max = max, sum = sum, n_distinct = n_distinct), aa)
#Source: local data frame [3 x 5]
#
# bb mean max sum n_distinct
#1 a 2 3 4 2
#2 b 2 2 2 1
#3 c 4 4 4 1
사용.count()
가장 쉬운 방법은 다음을 사용하는 것입니다.count()
:
> count(data, bb)
bb n
1 a 2
2 b 1
3 c 2
사용.summarise()
2023년부터 업데이트: dplyr와 함께, 사용하기.by =
대신에group_by()
기억하지 않아도 된다는 의미이므로 선호합니다.ungroup()
마지막에:
> data |> summarise(length(unique(aa)), .by = bb)
bb length(unique(aa))
1 a 2
2 b 1
3 c 2
또는 파이프를 끝까지 사용하고자 하는 경우:
> data |> summarise(aa |> unique() |> length(), .by = bb)
언급URL : https://stackoverflow.com/questions/26720349/get-dplyr-count-of-distinct-in-a-readable-way
'source' 카테고리의 다른 글
배열 vs.자바스크립트에서 객체 효율성 (0) | 2023.10.04 |
---|---|
Swagger API 작업 순서 지정 (0) | 2023.10.04 |
Android Button 배경색이 변하지 않음 (0) | 2023.10.04 |
Angular에서 .net WebAPI로 게시 (0) | 2023.10.04 |
트리거를 만들어야 해요 제가 문제가 있어요 (0) | 2023.10.04 |