트위터 데이터를 시간에 따라 시각화하기

R로 소셜 미디어 데이터 분석하기

Vivek Vijayaraghavan

Data Science Coach

학습 개요

  • 시계열 데이터
  • 시계열 객체와 플롯 생성
  • 시간에 따른 트윗 빈도 시각화
  • 두 브랜드의 브랜드 현존감 비교

브랜드 현존감의 정의

트윗량으로 측정한 브랜드 현존감

R로 소셜 미디어 데이터 분석하기

시계열 데이터

  • 시간 인덱스로 정렬된 데이터 포인트 집합
  • 트윗 빈도 시각화

시계열 플롯

R로 소셜 미디어 데이터 분석하기

시계열 분석을 위한 트윗 추출

  • search_tweets()로 시계열 분석용 트윗 추출
library(rtweet)
# search_tweets()로 "#google" 트윗 수집
search_tweets("#google", n = 18000, include_rts = FALSE)
R로 소셜 미디어 데이터 분석하기

추출된 트윗 데이터

status_id                 created_at           screen_name
<chr>                    <S3: POSIXct>            <chr>
1164921105066463232    2019-08-23 15:23:29    catapanoannal            
1164921037143699456    2019-08-23 15:23:13    STARBEXPLORE    
1164920927341039621    2019-08-23 15:22:46    indra_susanto    
1164920898475794435    2019-08-23 15:22:40    virfice    
1164920877940482048    2019-08-23 15:22:35    KnowledgeNile    
1164920647962832897    2019-08-23 15:21:40    mahomes_tech
  • created_at에는 트윗의 타임스탬프가 포함됩니다
R로 소셜 미디어 데이터 분석하기

트윗 빈도 시각화

트윗 빈도 분석

  • 제품 전반의 참여도 모니터링
  • 트윗 빈도: 관심도 파악에 유용
R로 소셜 미디어 데이터 분석하기

트윗 빈도 시각화

# search_tweets()로 "#camry" 트윗 수집
camry_st <- search_tweets("#camry", n = 18000, include_rts = FALSE)
R로 소셜 미디어 데이터 분석하기

트윗 빈도 시각화

created_at            screen_name                    text
<S3: POSIXct>           <chr>                        <chr>
2019-08-23 03:29:58    dromru        Toyota Camry 2019 <U+0433><U+043E><U+0434><U+0        
2019-08-23 02:59:04    NusTrivia     Sportier 2020 Toyota Camry TRD to cost $31,995    
2019-08-22 18:09:06    NusTrivia     2020 Toyota Camry TRD Costs $31,995, It’s The     
2019-08-23 01:56:51    RaitisRides   ALL NEW 2020 Toyota Avalon is coming to R    
2019-08-23 01:17:36    jhooie        I have to say, when I finally settled down tod        
R로 소셜 미디어 데이터 분석하기

시계열 플롯 만들기

# 시계열 그래프 생성
ts_plot(camry_st, by = "hours", color = "blue")

Camry 트윗의 시계열 플롯

R로 소셜 미디어 데이터 분석하기

트윗 빈도 비교

  • 게시된 트윗량은 브랜드 현존감의 강력한 지표
  • Tesla와 Camry의 브랜드 현존감 비교

Tesla vs Camry

R로 소셜 미디어 데이터 분석하기

트윗 빈도 비교

  • Camry 트윗을 시계열 객체로 변환
  • 시계열 객체에는 시간간격별 트윗 빈도 집계 포함
# 트윗 데이터를 시계열 객체로 변환
camry_ts <- ts_data(camry_st, by = 'hours')
head(camry_ts)
time                    n
<S3: POSIXct>         <int>
2019-08-13 14:00:00     12            
2019-08-13 15:00:00     34            
2019-08-13 16:00:00      1            
2019-08-13 17:00:00      2
R로 소셜 미디어 데이터 분석하기

트윗 빈도 비교

# 시계열 객체의 두 열 이름 변경
names(camry_ts) <- c("time", "camry_n")
head(camry_ts)
time                  camry_n
<S3: POSIXct>          <int>
2019-08-13 14:00:00      12            
2019-08-13 15:00:00      34            
2019-08-13 16:00:00       1            
2019-08-13 17:00:00       2
R로 소셜 미디어 데이터 분석하기

트윗 빈도 비교

tesla_st <- search_tweets("#tesla", n = 18000, include_rts = FALSE)
tesla_ts <- ts_data(tesla_st, by = 'hours')
names(tesla_ts) <- c("time", "tesla_n")
head(tesla_ts)
time                 tesla_n
<S3: POSIXct>         <int>
2019-08-13 13:00:00    17            
2019-08-13 14:00:00    58            
2019-08-13 15:00:00    38            
2019-08-13 16:00:00    32            
2019-08-13 17:00:00    38
R로 소셜 미디어 데이터 분석하기

트윗 빈도 비교

# 두 시계열 객체를 병합하고 "time" 열 유지
merged_df <- merge(tesla_ts, camry_ts, by = "time", all = TRUE)
head(merged_df)
time                tesla_n    camry_n
<S3:POSIXct>          <int>     <int>
2019-08-13 13:00:00    17        NA    
2019-08-13 14:00:00    58        12    
2019-08-13 15:00:00    38        34    
2019-08-13 16:00:00    32         1
R로 소셜 미디어 데이터 분석하기

트윗 빈도 비교

# melt()로 트윗 빈도 열을 스택
library(reshape)
melt_df <- melt(merged_df, na.rm = TRUE, id.vars = "time")
head(melt_df)
time                  variable       value
<S3: POSIXct>          <fct>        <int>
2019-08-13 13:00:00    tesla_n        17    
2019-08-13 14:00:00    tesla_n        58    
2019-08-13 15:00:00    tesla_n        38    
2019-08-13 16:00:00    tesla_n        32    
2019-08-13 17:00:00    tesla_n        38    
2019-08-13 18:00:00    tesla_n        34
R로 소셜 미디어 데이터 분석하기

트윗 빈도 비교

# Camry와 Tesla 트윗 빈도 플롯
ggplot(data = melt_df, 
       aes(x = time, y = value, col = variable)) +
       geom_line(lwd = 0.8)
R로 소셜 미디어 데이터 분석하기

비교 플롯

Camry와 Tesla의 시계열 비교 플롯

R로 소셜 미디어 데이터 분석하기

Ayo berlatih!

R로 소셜 미디어 데이터 분석하기

Preparing Video For Download...