public bigdata

tidyverse other verbs, tips 본문

R programming

tidyverse other verbs, tips

public bigdata 2019. 9. 1. 20:11

0. filter tip

Base R에서는 인덱스 또는 인덱스에 해당하는 조건의 반환 값이 NA인 경우 NA를 반환한다.

데이터가 위와 같을 때 실행한 코드와 결과가 아래 있다. filter 함수는 조건이 NA로 반환되는 경우에는 해당 값을 반환하지 않고 무시한다. Base R의 경우에는 반환값을 NA로 뱉어준다. 

###########Base R NA반환############
> iris[iris$Sepal.Length >=1, ]
     Sepal.Length Sepal.Width Petal.Length Petal.Width Species
NA             NA          NA           NA          NA    <NA>
NA.1           NA          NA           NA          NA    <NA>


###########tidyverse filter NA 대처 방법############
> iris %>% 
+   filter(Sepal.Length>=1)
[1] Sepal.Length Sepal.Width  Petal.Length Petal.Width  Species     
<0 행> <또는 row.names의 길이가 0입니다>

1. n()

다음과 같은 데이터가 있을 때 아래의 코드와 결과를 보면 n() 은 group_by가 지정된 경우에 group 변수의 범주별 값의 갯수를 세어준다. (그룹 변수에 NA가 있다면 NA가 몇개인지도 세어준다.) 즉. setota값에 해당하는 관측치의 갯수를 세어준다. Species변수에 setosa가 들어있는 경우는 5건 이라는 것이다. 그룹이 지정된 상태에서 수행하면 그룹 변수의 각 범주별 관측치 갯수, 데이터 테이블에서 바로 적용하면 데이터 테이블의 전체 관측치 갯수를 세어준다. NA값은 신경쓸 필요가 없다. 관측치(개별 행들)가 몇 개 인지 세어주는 것이기 때문이다.

iris %>% 
  group_by(Species) %>% 
  summarise(count_PeWi = n())
  
  
  # A tibble: 1 x 2
  Species count_PeWi
  <fct>        <int>
1 setosa           5

2. summarise와 함께 사용되는 유용한 함수 중 일부

  • first, last : 변수별 첫번째, 마지막 값 산출

  • nth : n번째 값 산출

  • n_distinct : 유일무이한 값 개수 (NA값도 세어준다)

3. lead, lag 

예시를 보면 쉽게 이해될 것이다.

  • lead : 해당 벡터를 원하는 길이 만큼 앞으로 이동한다

  • lag : 해당 벡터를 원하는 길이 만큼 뒤쪽으로 이동한다.

lead(1:10, 1)
#>  [1]  2  3  4  5  6  7  8  9 10 NA
lead(1:10, 2)
#>  [1]  3  4  5  6  7  8  9 10 NA NA

lag(1:10, 1)
#>  [1] NA  1  2  3  4  5  6  7  8  9
lead(1:10, 1)
#>  [1]  2  3  4  5  6  7  8  9 10 NA

4. top_n

  • top_n(n, wt) : wt에 지정된 변수가 상위 n개인 테이터프레임의 행들을 선택한다.

5. arrange

  • arrange 함수는 group_by를 무시한다.