방명록

  1. Hihello 2017.05.08 19:49 신고  수정/삭제  댓글쓰기

    안녕하세요 선생님ㅠㅠㅠ
    제가 답답해서 우선 방명록으로라도 여쭤보고 싶어 이렇게 글을 남깁니다

    현재 제가 csv 파일을 가지고 있습니다!
    month Day Date Team 1 Team 2 Team1_Score Team2_Score Stadium
    4 1 Fri Lotte Nexen 2 1 고척
    4 1 Fri Hanhwa LG 4 5 잠실
    4 1 Fri KT SK 8 4 문학
    이런식으로 쭉 600개가 넘는 파일이 있습니다

    이때 비긴 경기는 분석 대상에서 제외(데이터에서 제거 후 분석을 수행)하고

    1. 팀끼리 서로 승리한 횟수를 세어 표로 정리
    2. 각 팀별로 구장별 승리 횟수를 세어 표로 정리

    이렇게 조건을 주어주고

    ## Lotte Hanhwa KT Doosan KIA NC Nexen LG Samsung SK
    ## Lotte 0 8 10 7 6 1 5 8 11 5
    ## Hanhwa 8 0 7 2 7 7 4 5 9 10
    ## KT 4 7 0 3 5 5 3 6 8 6
    ## Doosan 5 12 13 0 9 9 9 9 9 9
    ## KIA 10 9 10 5 0 7 5 6 7 6
    ## NC 14 8 9 7 9 0 6 8 5 7
    ## Nexen 7 9 11 4 11 7 0 6 8 6
    ## LG 7 8 9 7 7 4 10 0 5 6
    ## Samsung 4 5 6 5 6 7 7 8 0 6
    ## SK 9 4 9 4 8 5 9 10 5 0

    이것이 1번에 대한 예상 결과물이고

    ## 고척 잠실 문학 대구 마산 대전 광주 수원 사직 포항 울산 청주
    ## Lotte 1 5 3 3 1 3 2 4 33 2 4 0
    ## Hanhwa 2 5 5 3 3 32 2 2 2 1 1 1
    ## KT 2 3 3 5 4 2 1 25 1 0 1 0
    ## Doosan 5 48 3 4 4 5 4 6 3 0 0 2
    ## KIA 1 5 2 5 5 3 36 4 4 0 0 0
    ## NC 3 6 4 2 33 4 6 7 8 0 0 0
    ## Nexen 41 4 2 3 2 4 4 7 2 0 0 0
    ## LG 4 40 3 2 1 4 4 3 2 0 0 0
    ## Samsung 3 5 4 26 3 2 3 4 2 2 0 0
    ## SK 3 6 35 2 3 1 4 5 4 0 0 0

    이것이 2번에 대한 결과물인데 도저히 어떻게 이를 추출할지 감이 안와요ㅠㅠㅠ
    정말 급하고 중요한데 혹시 좀 알려주실 수 없을까요ㅠㅠ죄송합니다 미리 감사드립니다!

    • R Friend R_Friend 2017.05.09 00:37 신고  수정/삭제

      안녕하세요 Hihello 님,

      아래에 R script 짜보았습니다. 원하시는 결과이면 좋겠습니다.
      ^^


      > ##----------------------------------------------------
      > ## KBO 2017 : baseball game competition score analysis
      > ##----------------------------------------------------
      >
      > # (1) making a sample dataset
      > month <- c(4, 4, 4, 4, 4, 4, 4)
      > Day <- c(1, 1, 1, 3, 3, 3, 3)
      > Date <- c("Fri", "Fri", "Fri", "Sun", "Sun", "Sun", "Sun")
      > Team1 <- c("Lotte", "Hanhwa", "KT", "SK", "Nexen", "LG", "Samsung")
      > Team2 <- c("Nexen", "LG", "SK", "KT", "Lotte", "Hanhwa", "Kia")
      > Team1_Score <- c(2, 4, 8, 6, 4, 1, 3)
      > Team2_Score <- c(1, 5, 4, 3, 9, 2, 3)
      > Stadium <- c("고척", "잠실", "문학", "수원", "부산", "대전", "광주")
      >
      > KBO_2017 <- data.frame(month, Day, Date, Team1, Team2, Team1_Score, Team2_Score, Stadium)
      > str(KBO_2017)
      'data.frame': 7 obs. of 8 variables:
      $ month : num 4 4 4 4 4 4 4
      $ Day : num 1 1 1 3 3 3 3
      $ Date : Factor w/ 2 levels "Fri","Sun": 1 1 1 2 2 2 2
      $ Team1 : Factor w/ 7 levels "Hanhwa","KT",..: 4 1 2 7 5 3 6
      $ Team2 : Factor w/ 7 levels "Hanhwa","Kia",..: 6 4 7 3 5 1 2
      $ Team1_Score: num 2 4 8 6 4 1 3
      $ Team2_Score: num 1 5 4 3 9 2 3
      $ Stadium : Factor w/ 7 levels "고척","광주",..: 1 7 4 6 5 3 2
      >
      > KBO_2017 <- transform(KBO_2017,
      + Team1 = as.character(Team1),
      + Team2 = as.character(Team2))
      >
      > rm(month, Day, Date, Team1, Team2, Team1_Score, Team2_Score, Stadium)
      >
      >
      > # (2) if the score is tied, then delete the game
      > # http://rfriend.tistory.com/49
      > KBO_2017_1 <- subset(KBO_2017, subset = (Team1_Score != Team2_Score))
      >
      >
      > # (3) counting the number of wins b/w teams
      > KBO_2017_1 <- transform(KBO_2017_1,
      + Team_win = ifelse(Team1_Score > Team2_Score, Team1, Team2),
      + Team_lose = ifelse(Team1_Score > Team2_Score, Team2, Team1),
      + win_cnt = 1)
      >
      > # http://rfriend.tistory.com/235
      > #install.packages("dplyr")
      > library(dplyr)
      > Team_win_cnt <- KBO_2017_1 %>%
      + group_by(Team_win, Team_lose) %>%
      + summarise(win_cnt_sum = sum(win_cnt))
      >
      > Team_win_cnt
      Source: local data frame [5 x 3]
      Groups: Team_win [?]

      Team_win Team_lose win_cnt_sum
      <fctr> <fctr> <dbl>
      1 Hanhwa LG 1
      2 KT SK 1
      3 LG Hanhwa 1
      4 Lotte Nexen 2
      5 SK KT 1
      >
      > # http://rfriend.tistory.com/80
      > #install.packages("reshape")
      > library(reshape)
      > Team_win_cast <- cast(data = Team_win_cnt,
      + Team_win ~ Team_lose,
      + value = 'win_cnt_sum',
      + fun = sum)
      >
      > Team_win_cast
      Team_win Hanhwa KT LG Nexen SK
      1 Hanhwa 0 0 1 0 0
      2 KT 0 0 0 0 1
      3 LG 1 0 0 0 0
      4 Lotte 0 0 0 2 0
      5 SK 0 1 0 0 0
      >
      >
      > # (4) counting the number of wins
      > Team_Stadium_win_cnt <- KBO_2017_1 %>%
      + group_by(Team_win, Stadium) %>%
      + summarise(win_cnt_sum = sum(win_cnt))
      >
      > Team_Stadium_win_cnt
      Source: local data frame [6 x 3]
      Groups: Team_win [?]

      Team_win Stadium win_cnt_sum
      <fctr> <fctr> <dbl>
      1 Hanhwa 대전 1
      2 KT 문학 1
      3 LG 잠실 1
      4 Lotte 고척 1
      5 Lotte 부산 1
      6 SK 수원 1
      >
      > Team_Stadium_win_cnt_cast <- cast(data = Team_Stadium_win_cnt,
      + Team_win ~ Stadium,
      + value = 'win_cnt_sum',
      + fun = sum)
      >
      > Team_Stadium_win_cnt_cast
      Team_win 고척 대전 문학 부산 수원 잠실
      1 Hanhwa 0 1 0 0 0 0
      2 KT 0 0 1 0 0 0
      3 LG 0 0 0 0 0 1
      4 Lotte 1 0 0 1 0 0
      5 SK 0 0 0 0 1 0

  2. 진형민 2017.05.08 04:16 신고  수정/삭제  댓글쓰기

    좋은자료 잘 보고가요!!
    정말정말 열심히 공부하신게 보이시네요!

    • R Friend R_Friend 2017.05.08 09:49 신고  수정/삭제

      블로그 좋게 봐주셔서 감사합니다. ^^

    • 진형민 2017.05.08 17:46 신고  수정/삭제

      와.. 혼자 독학하신건가요~~???

    • R Friend R_Friend 2017.05.09 00:46 신고  수정/삭제

      R이랑 Python은 주로 책이랑 인터넷으로 공부하고 있습니다. 업무에 적용해서 성과를 내야 하다보니 더 절박하게 공부하게 되는거 같아요. 그리고 블로그에 정리해놓으면 나중에 저도 필요할 때 요긴하게 찾아서 쓸 수 있어서 지식공유도 할겸, 제 knowledge DB 로도 사용할 겸 포스팅하고 있습니다.

      요즘엔 양질의 컨텐츠(특히, 영어)가 정말 많다는 점이예요. 남들이 기꺼이 베푸는 지식공유의 혜택을 저도 누리고 있는거지요. ^^

  3. 김경찬 2017.05.05 13:30 신고  수정/삭제  댓글쓰기

    안녕하세요 선생님
    정말 감사합니다^^

    하나만 더 여쭤봐도 될까요?
    for문으로 dataframe을 만들었는데
    콘솔창에서 조회를 해보니깐 컬럼이 일정 갯수가 넘어가면 아랫줄롤 출력이 되더라구요.. 불편해서 그런데 해결 방법아시나요?

    아래와 같이 \ 가 생긴 후에 밑으로 출력되네요.

    ondition conclusion conclusion2 condition_sup conclusion_sup \
    0 [B, C] [B, C, D] [D] 1.0 1.0
    1 [B, D] [B, C, D] [C] 1.0 1.0
    2 [C, D] [B, C, D] [B] 3.0 1.0
    3 [B, C] [B, C, E] [E] 1.0 1.0
    4 [B, E] [B, C, E] [C] 2.0 1.0
    5 [C, E] [B, C, E] [B] 4.0 1.0
    6 [B, D] [B, D, E] [E] 1.0 1.0
    7 [B, E] [B, D, E] [D] 2.0 1.0
    8 [D, E] [B, D, E] [B] 3.0 1.0
    9 [C, D] [C, D, E] [E] 3.0 3.0
    10 [C, E] [C, D, E] [D] 4.0 3.0
    11 [D, E] [C, D, E] [C] 3.0 3.0
    12 [B] [B, C, D] [C, D] 2.0 1.0
    13 [C] [B, C, D] [B, D] 4.0 1.0
    14 [D] [B, C, D] [B, C] 3.0 1.0
    15 [B] [B, C, E] [C, E] 2.0 1.0
    16 [C] [B, C, E] [B, E] 4.0 1.0
    17 [E] [B, C, E] [B, C] 5.0 1.0
    18 [B] [B, D, E] [D, E] 2.0 1.0
    19 [D] [B, D, E] [B, E] 3.0 1.0
    20 [E] [B, D, E] [B, D] 5.0 1.0
    21 [C] [C, D, E] [D, E] 4.0 3.0
    22 [D] [C, D, E] [C, E] 3.0 3.0
    23 [E] [C, D, E] [C, D] 5.0 3.0
    24 [B] [B, C] [C] 2.0 1.0
    25 [C] [B, C] [B] 4.0 1.0
    26 [B] [B, D] [D] 2.0 1.0
    27 [D] [B, D] [B] 3.0 1.0
    28 [B] [B, E] [E] 2.0 2.0
    29 [E] [B, E] [B] 5.0 2.0
    30 [C] [C, D] [D] 4.0 3.0
    31 [D] [C, D] [C] 3.0 3.0
    32 [C] [C, E] [E] 4.0 4.0
    33 [E] [C, E] [C] 5.0 4.0
    34 [D] [D, E] [E] 3.0 3.0
    35 [E] [D, E] [D] 5.0 3.0

    conclusion2_sup lift conclusion2_key
    0 NaN NaN D
    1 NaN NaN C
    2 NaN NaN B
    3 NaN NaN E
    4 NaN NaN C
    5 NaN NaN B
    6 NaN NaN E
    7 NaN NaN D
    8 NaN NaN B
    9 NaN NaN E
    10 NaN NaN D
    11 NaN NaN C
    12 NaN NaN CD
    13 NaN NaN BD
    14 NaN NaN BC
    15 NaN NaN CE
    16 NaN NaN BE
    17 NaN NaN BC
    18 NaN NaN DE
    19 NaN NaN BE
    20 NaN NaN BD
    21 NaN NaN DE
    22 NaN NaN CE
    23 NaN NaN CD
    24 NaN NaN C
    25 NaN NaN B
    26 NaN NaN D
    27 NaN NaN B
    28 NaN NaN E
    29 NaN NaN B
    30 NaN NaN D
    31 NaN NaN C
    32 NaN NaN E
    33 NaN NaN C

    • R Friend R_Friend 2017.05.05 13:47 신고  수정/삭제

      Spyder 사용하시나요?
      콘솔 창 넓이를 좀더 넓게 조절해보세요. 마우스로 콘솔창 경계 선택 후에 클릭하고서 옆으로 더 넓게 벌려보세요.

    • 김경찬 2017.05.05 14:03 신고  수정/삭제

      스파이더사용하고 풀화면으로 해도 그렇더라구요.
      ipython console
      python console둘다 그러네용 ㅠㅠ
      csv파일을 불러온 데이터프레임은 잘보이는데 제가 직접 만든 데이터프레임 조회시에만 그러네용...

  4. 김경찬 2017.05.04 03:57 신고  수정/삭제  댓글쓰기

    안녕하세요 선생님!

    오랜만에 블로그에 찾아왔습니다.
    새벽까지 공부를 하고 있는데 3시간째 고민해도 답이 나오지 않네요..
    >>> r1
    condition condition_sup
    0 [Blue, Red] 4.0
    1 [Blue, White] 4.0
    2 [Red, White] 4.0
    3 [Green, Red] 2.0
    4 [Green, White] 2.0
    5 [Red, White] 4.0
    6 [Blue] 6.0
    7 [Red] 6.0
    8 [White] 7.0
    9 [Green] 2.0
    10 [Red] 6.0
    11 [White] 7.0
    12 [Blue] 6.0
    13 [Red] 6.0
    14 [Blue] 6.0
    15 [White] 7.0
    16 [Green] 2.0
    17 [Red] 6.0
    18 [Green] 2.0
    19 [White] 7.0
    20 [Red] 6.0
    21 [White] 7.0
    >>> r2
    condition conclusion2_sup
    0 [White] NaN
    1 [Red] NaN
    2 [Blue] NaN
    3 [White] NaN
    4 [Red] NaN
    5 [Green] NaN
    6 [Red, White] NaN
    7 [Blue, White] NaN
    8 [Blue, Red] NaN
    9 [Red, White] NaN
    10 [Green, White] NaN
    11 [Green, Red] NaN
    12 [Red] NaN
    13 [Blue] NaN
    14 [White] NaN
    15 [Blue] NaN
    16 [Red] NaN
    17 [Green] NaN
    18 [White] NaN
    19 [Green] NaN
    20 [White] NaN
    21 [Red] NaN


    r2의 NaN값을 넣어야하는데 r1의 같은 컬럼이 있어서 join을 해서 값을 넣으려고 했으나
    condition컬럼의 값들이 리스트로 되어 있어 join이 되지 않습니다... 혹시 가능하게 하는 방법을 알고 계신가요?

    답변 기다리겠습니다.

    • R Friend R_Friend 2017.05.04 21:38 신고  수정/삭제

      안녕하세요 김경찬님,

      Python에서 먼저 리스트를 string으로 변환한 후에 중복값 제거 하고 나서 inner join 해 보았습니다.

      #%% merging two DataFrames

      # importing modules
      import pandas as pd
      import numpy as np

      # making DataFrame
      r1 = pd.DataFrame({
      'condition' : [['Blue', 'Red'], ['Blue', 'White'], ['Red', 'White'],
      ['Green', 'Red'], ['Green', 'White'], ['Red', 'White'],
      ['Blue'], ['Red'], ['White'], ['Green'], ['Red'], ['White'],
      ['Blue'], ['Red'], ['Blue'], ['White'], ['Green'], ['Red'],
      ['Green'], ['White'], ['Red'], ['White']],
      'condition_sup' : [4.0, 4.0, 4.0, 2.0, 2.0, 4.0, 6.0, 6.0, 7.0, 2.0,
      6.0, 7.0, 6.0, 6.0, 6.0, 7.0, 2.0, 6.0, 2.0, 7.0,
      6.0, 7.0]
      })

      r1


      r2 = pd.DataFrame({
      'condition' :[['White'], ['Red'], ['Blue'], ['White'], ['Red'],
      ['Green'], ['Red', 'White'], ['Blue', 'White'],
      ['Blue', 'Red'], ['Red', 'White'], ['Green', 'White'],
      ['Green', 'Red'], ['Red'], ['Blue'], ['White'], ['Blue'],
      ['Red'], ['Green'], ['White'], ['Green'], ['White'],
      ['Red']],
      'conclusion2_sup' : [np.nan, np.nan, np.nan, np.nan, np.nan, np.nan,
      np.nan, np.nan, np.nan, np.nan, np.nan, np.nan,
      np.nan, np.nan, np.nan, np.nan, np.nan, np.nan,
      np.nan, np.nan, np.nan, np.nan]
      })

      r2


      # converting a list into a string
      for i in range(len(r1)):
      r1.ix[i, 'condition_key'] = ''.join(map(str, r1.ix[i, 'condition']))

      r1


      for j in range(len(r2)):
      r2.ix[j, 'condition_key'] = ''.join(map(str, r2.ix[j, 'condition']))

      r2

      # keeping the unique values
      r1 = r1.drop_duplicates(['condition_key', 'condition_sup'], keep='first')
      r2 = r2.drop_duplicates(['condition_key', 'conclusion2_sup'], keep='first')


      # merge
      r1_r2 = pd.merge(r1, r2[['condition_key', 'conclusion2_sup']],
      how = 'inner',
      on = 'condition_key')

      # check the result
      r1_r2

      condition condition_sup condition_key conclusion2_sup
      0 [Blue, Red] 4.0 BlueRed NaN
      1 [Blue, White] 4.0 BlueWhite NaN
      2 [Red, White] 4.0 RedWhite NaN
      3 [Green, Red] 2.0 GreenRed NaN
      4 [Green, White] 2.0 GreenWhite NaN
      5 [Blue] 6.0 Blue NaN
      6 [Red] 6.0 Red NaN
      7 [White] 7.0 White NaN
      8 [Green] 2.0 Green NaN

  5. eternity79 2017.05.01 13:23 신고  수정/삭제  댓글쓰기

    안녕하세요 운영자님, 항상 큰 도움이 되어주셔서 감사합니다.

    저는 얼마전부터 R을 독학으로 익히고 있는데, 기본 문법은 대충 떼고 실제 데이터에 적용하는 연습 중입니다.

    독학으로 맨땅에 헤딩하다보니 이래저래 참 힘들군요...염치불구하고 선생님께 도움을 구해봅니다.

    제가 구현하고자 하는 것은 투자 포트폴리오를 만드는 건데요, 우리나라 주식시장에 있는 종목 중 PER이나 PBR이 낮은 종목 랭킹을 매겨 포트폴리오 수익률을 구하는 것입니다.

    Raw 데이터에서 시가 총액과 수정 주가는 월별 데이터인데, 순이익과 총자본은 분기데이터로 나와 있어 분기 데이터를 월데이터로 바꾸어 데이터 프레임을 동일하게 만들어 연산을 하고 싶습니다.

    (Raw data : 1분기 순이익, 2분기 순이익, 3분기 순이익, 4분기 순이익
    바꾸고 싶은 형태 : 1월 순이익(1분기 순이익), 2월 순이익(1분기 순이익), 3월 순이익(1분기 순이익), 4월 순이익(2분기 순이익), 5월 순이익(2분기 순이익), 6월 순이익(2분기 순이익)..........................)

    제가 짜본 코드는 이건데요, 에러가 납니다. 문제가 뭐고 어떻게 해결해야 할까요?

    조언 주시면 정말 감사하겠습니다~ (데이터 파일은 제일 아래에 링크 걸었습니다)

    좋은 하루 되십시오

    <코드>

    총자본 = read.csv('총자본.csv')
    순이익 = read.csv('순이익.csv')
    시가총액 = read.csv('시가총액.csv')
    수정주가 = read.csv('수정주가.csv')

    총자본수정 = data.frame()
    for (i in 1:length(총자본)) {
    총자본수정 = rbind(총자본수정,총자본[i,],총자본[i,],총자본[i,])
    }

    순이익수정 = data.frame()
    for (i in 1:length(순이익)) {
    총자본수정 = rbind(순이익수정,순이익[i,],순이익[i,],순이익[i,])
    }

    <데이터 파일 링크>

    https://drive.google.com/file/d/0B1HcQj8kIFAGcjZUNFVObWQzb2c/view?usp=sharing
    https://drive.google.com/file/d/0B1HcQj8kIFAGLVEydUlFeHg5SFk/view?usp=sharing
    https://drive.google.com/file/d/0B1HcQj8kIFAGdnYzcTlELVkzWTg/view?usp=sharing
    https://drive.google.com/file/d/0B1HcQj8kIFAGWFhyaGs5aVdZMEk/view?usp=sharing

    • R Friend R_Friend 2017.05.01 21:59 신고  수정/삭제

      안녕하세요 eternity 님,

      방명록에 글 남겨주신 내용 참고해서 R script 짜봤습니다. 의도하신 결과가 맞는지 모르겠네요.

      ##-----------------------------
      ## total capital : quarterly
      ##-----------------------------

      # loading csv dataset
      tot_capital = read.csv('C:/Users/Administrator/Documents/finance/총자본.csv')

      # overview of dataframes
      str(tot_capital)

      # reshape package for rename, melt
      install.packages("reshape")
      library(reshape)

      # changing var name : X -> year
      # http://rfriend.tistory.com/41
      tot_capital <- rename(tot_capital, c(X = "year"))

      # variable names for indexing below
      tot_capital_vars <- names(tot_capital)
      tot_capital_vars <- tot_capital_vars[2:length(tot_capital_vars)]

      # making quarter variable
      # http://rfriend.tistory.com/25
      tot_capital$qt <- rep(c(1:4), len = nrow(tot_capital))
      tot_capital <- transform(tot_capital, year_qt = paste(year, qt, sep="_"))


      # melt
      # http://rfriend.tistory.com/80
      tot_capital_melt <- melt(data = tot_capital,
      id.vars = c("year_qt"),
      measure.vars = tot_capital_vars)

      # changing var name : variable -> company, value -> tot_cap
      tot_capital_melt <- rename(tot_capital_melt,
      c(variable = "company",
      value = "tot_cap"))



      ##---------------------------------
      ## market capitalization : monthly
      ##----------------------------- ---

      # loading csv dataset
      mkt_cap = read.csv('C:/Users/Administrator/Documents/finance/시가총액.csv')

      # overview of dataframes
      str(mkt_cap)

      # changing X -> ymd (year_month_day)
      mkt_cap <- rename(mkt_cap, c(X = "ymd"))


      # variable names for indexing below
      mkt_cap_vars <- names(mkt_cap)
      mkt_cap_vars <- mkt_cap_vars[2:length(mkt_cap_vars)]


      # making year, month, quarter variable
      # http://rfriend.tistory.com/37
      mkt_cap <- transform(mkt_cap,
      year = substr(ymd, 1, 4),
      mth = substr(ymd, 6, 7))

      # http://rfriend.tistory.com/38
      mkt_cap <- transform(mkt_cap, qt = ifelse(mth %in% c('01', '02', '03'), 1,
      ifelse(mth %in% c('04', '05', '06'), 2,
      ifelse(mth %in% c('07', '08', '09'), 3, 4))))

      mkt_cap <- transform(mkt_cap,
      year_qt = paste(year, qt, sep="_"))


      # melt
      mkt_cap_melt <- melt(data = mkt_cap,
      id.vars = c("year_qt"),
      measure.vars = tot_capital_vars)


      # changing var name : variable -> company, value -> mkt_cap
      mkt_cap_melt <- rename(mkt_cap_melt,
      c(variable = "company",
      value = "mkt_cap"))

      ##-----------------------------
      # merge two dataframes : tot_capital_melt, mkt_cap_melt
      ##-----------------------------

      # making key by combining company & year_qt
      tot_capital_melt <- transform(tot_capital_melt, comp_year_qt = paste(company, year_qt, sep="_"))

      mkt_cap_melt <- transform(mkt_cap_melt, comp_year_qt = paste(company, year_qt, sep="_"))


      # merge
      # http://rfriend.tistory.com/51
      data_all <- merge(x = mkt_cap_melt,
      y = tot_capital_melt[,c('comp_year_qt', 'tot_cap')],
      by = 'comp_year_qt',
      all.x = TRUE) # left outer join

      head(data_all, 20)


      > head(data_all, 20)
      comp_year_qt year_qt company mkt_cap tot_cap
      1 AD모터스_2000_1 2000_1 AD모터스
      2 AD모터스_2000_1 2000_1 AD모터스
      3 AD모터스_2000_1 2000_1 AD모터스
      4 AD모터스_2000_2 2000_2 AD모터스 8,156,000
      5 AD모터스_2000_2 2000_2 AD모터스 8,156,000
      6 AD모터스_2000_2 2000_2 AD모터스 8,156,000
      7 AD모터스_2000_3 2000_3 AD모터스 17,000 13,459,859
      8 AD모터스_2000_3 2000_3 AD모터스 21,080 13,459,859
      9 AD모터스_2000_3 2000_3 AD모터스 13,459,859
      10 AD모터스_2000_4 2000_4 AD모터스 10,880 13,519,172
      11 AD모터스_2000_4 2000_4 AD모터스 14,076 13,519,172
      12 AD모터스_2000_4 2000_4 AD모터스 21,012 13,519,172
      13 AD모터스_2001_1 2001_1 AD모터스 18,088 13,534,084
      14 AD모터스_2001_1 2001_1 AD모터스 22,508 13,534,084
      15 AD모터스_2001_1 2001_1 AD모터스 19,924 13,534,084
      16 AD모터스_2001_2 2001_2 AD모터스 18,496 13,480,061
      17 AD모터스_2001_2 2001_2 AD모터스 24,276 13,480,061
      18 AD모터스_2001_2 2001_2 AD모터스 22,644 13,480,061
      19 AD모터스_2001_3 2001_3 AD모터스 36,040 15,927,413
      20 AD모터스_2001_3 2001_3 AD모터스 23,664 15,927,413

      =================
      첨언하자면, 데이터 읽어들이기 전에 숫자에 comma(,)가 들어가 있는거에서 comma 제거 하시구요, read.csv() 함수에서
      stringsAsFactors = FALSE 옵션도 설정해주는게 좋을거 같습니다. 애초 read.csv() 만 쓰면 데이터 type 이 factor로 들어가거나 caracter로 들어가서 숫자형으로 변환하고 하는데 애 먹으실듯 합니다.

    • eternity79 2017.05.01 22:18 신고  수정/삭제

      헉! 운영자님~ 이렇게 자세히 답변해주시다니 정말 감사드립니다~

      제가 워낙 초보라 보내주신 코드 꼼꼼하게 공부해보겠습니다~

      다시 한 번 감사 말씀드립니다~

      항상 건강하십시오!

  6. RF_follower 2017.04.30 16:11 신고  수정/삭제  댓글쓰기

    안녕하세요.
    어쩌다 R을 접한 완전초보인데요, 동적문서 만들기 연재 시작해서 너무 반갑고 고맙고 감사합니다.
    (이런거 왜 하나, 편하고 쉬워 보이는 문서편집도 많은데 ...다른 이름으로 저장하면 되는거 아냐?
    이런식이거든요 ㅋ 어렵고 불편하고 뭔가 안되는게 많은 것 같고 ㅠㅠ, 변환해야 결과물 확인 할 수
    있고...^^)

    파일이름 쓸데, -와 _의 차이 같아요. 왜 불편하게 왼쪽 shift눌러가며 _ 을 쓸까? 아직 명확한 이유는 모르지만, 익숙해지면 편할 것 같다는 느낌입니다.

    무작정 따라해보는 완전초보 입장에서는 알게 모르게 좋은 습관이 익혀지는 것 같아서
    안심되고 기쁘고 반갑기만 합니다.

    감사합니다 꾸벅 ^^



    • R Friend R_Friend 2017.04.30 21:05 신고  수정/삭제

      안녕하세요.

      이번 5월 첫주 연휴기간 동안 동적 문서 만들기에 대해서 집중적으로 써볼려고 해요. R Shiny 까지 진도 뺄 수 있었으면 하는데요, 여기저기 가야할 곳도 있고 부모님 농사일도 도와드리고 해야 해서 어디까지 쓸주 있을지 모르겠네요.

      뭐든 처음 배우려면 두렵기도 하고 꺼려지기도 하는데요, 일단 배워두고 익숙해지면 '이걸 진작 배워놓을걸... 그랬으면 시간 절약도 하고 손품도 덜 팔았을텐데...' 하는 빨리 시작하지 않았던 것에 대한 안타까움이 몰려올 것 같습니다.

      RStudio 참 대단하고 고맙다는 생각 많이 하게 되네요.

  7. 이진우 2017.04.24 18:19 신고  수정/삭제  댓글쓰기

    안녕하세요. 오랜만에 방문하네요 ㅎㅎ

    이전에 무강우시간 분류라는것에 대해서 질문드렸었습니다.ㅎㅎ

    이번에는
    case_1 <- c(5,4,3,2,1)
    z=1일때
    case_z 에서 z에 번호를 부여하고 싶은데..
    전에 알려주신 paste함수를 쓰면 paste("case_",z,sep="") 이렇게 하면 "case_1" 이 되버려서
    length("case_1") 이 되므로 length(case_1)과 다르게 되네요..ㅠㅠ

    아래와같이
    z=1
    case_1 <- c(5,4,3,2,1)
    sprintf("RN#10 %i:00 %d", 1:length(case_z), case_z)
    이런식으로 들어가게 되고..

    원하는 결과값은
    "RN#10 %1:00 5"
    "RN#10 %2:00 4"
    "RN#10 %3:00 3"
    "RN#10 %4:00 2"
    "RN#10 %5:00 1"

    이렇게 입니다.. 함수차이 일듯 한데... 어렵네요 ㅠㅠ

  8. 김세진 2017.04.03 18:09 신고  수정/삭제  댓글쓰기

    지식의 공유를 실천하고 계셔서 참 멋지십니다.
    저도 그런 삶을 살고픈데.. 아는 것이 미천하네요.
    여기저기 단편적으로 얻은 지식을 공유해주신 내용을 통해서 감사하게 잘 꿰고 있습니다.
    저도 공유해주신 지식의 확장을 위해 작게나마 일조해보겠습니다.
    아직 갈 길은 멀지만.. 감사합니다.

    • R Friend R_Friend 2017.04.05 08:37 신고  수정/삭제

      안녕하세요 김세진님, 블로그 좋게 봐주셔서 감사합니다.

      혹시 블로깅 해볼 마음이 있으시다면 꼭 해보시길 추천드립니다. 자기 자신을 위해서도 또 세상을 위해서도 좋은 일임에 틀림없습니다.

  9. 손원재 2017.03.28 21:01 신고  수정/삭제  댓글쓰기

    안녕하세요.
    데이터분석에 관심이 생겨 자료를 찾아보던중
    이렇게 좋은 블로그를 알게되어 정말 감사히 배우고있습니다.

  10. 정호 2017.03.22 22:04 신고  수정/삭제  댓글쓰기

    안녕하세요. 초대장을 받아보고자 글 남겨 봅니다.

    저는 사진전공자로서 작품 활동 및 각종 전시회 공유를 목적으로
    티스토리르 시작해 보려고 하는데요..

    초대장 보내주시면 성실히 활동 하겠습니다.
    s2is2@naver.com 부탁 드립니다.

    • R Friend R_Friend 2017.03.23 00:18 신고  수정/삭제

      정호님, Tistory 초대장 보내드렸습니다.

      저는 취미로 사진 찍는거 좋아하는데요, 사진 전공하시고 전시회도 한다고 하시니 멋지십니다.

      블로그 대박 나시길 바래요.

    • Horeang 2017.03.23 09:07 신고  수정/삭제

      안녕하십니까! 감사인사 전해 드리려고다시 방문 했습니다. 저에게 좋은 기회 주셔서 정말 감사 드립니다.
      항상 행복 하세요~



티스토리 툴바