길이가 같지 않은 열과이 열에 헤더가 묻혀 있음

Bonna

모든 두 번째 열이 특정 시간에 해당하고, 각 기간에 각각 '매수'및 '매도'위치가 있으며, 이러한 각 위치에는 두 가지 요소가 있습니다 (아래 참조). 그러나 열의 길이가 같지 않으므로 '판매'옵션은 다른 행에서 시작합니다 (값 사이에 묻혀 있음).

time, time1, time,  time2,  time, time3
buy,       , buy,        ,  buy,    
factor1,  1, factor1,    2, factor1,  3
factor2,  4, factor2,    5, factor2,  6
factor1,  7, factor1,    8, factor1,  9
factor2, 10, factor2,   11, factor2, 12
factor1, 13, sell,        , factor1, 14
factor2, 15, factor1,   16, factor2, 17
sell,      , factor2,   18, factor1, 19
factor1, 20, ,            , factor2, 21,
factor2, 22, ,            , sell,     
,          , ,            , factor1, 23
,          , ,            , factor2, 24
,          , ,            , factor1, 25
,          , ,            , factor2, 26

궁극적으로 아래와 같은 구조의 테이블을 원합니다.

time,   position,   factor,     value
time1,  buy,        factor1,    1
time1,  buy,        factor2,    4
time1,  buy,        factor1,    7
time1,  buy,        factor2,    10
time1,  buy,        factor1,    13
time1,  buy,        factor2,    15
time1,  sell,       factor1,    20
time1,  sell,       factor2,    22
time2,  buy,        factor1,    2
time2,  buy,        factor2,    5
time2,  buy,        factor1,    8
time2,  buy,        factor2,    11
time2,  sell,       factor1,    16
time2,  sell,       factor2,    18
time3,  buy,        factor1,    3
time3,  buy,        factor2,    6
time3,  buy,        factor1,    9
time3,  buy,        factor2,    12
time3,  buy,        factor1,    14
time3,  buy,        factor2,    17
time3,  buy,        factor1,    19
time3,  buy,        factor2,    21
time3,  sell,       factor1,    23
time3,  sell,       factor2,    24
time3,  sell,       factor1,    25
time3,  sell,       factor2,    26

인덱스를 추출한 다음 R에서 각각 '구매'및 '판매'목록을 만들 수 있습니다.하지만 이것이 가장 쉬운 방법인지 확실하지 않습니다 (이러한 파일이 많고 빠른 자동 방법을 선호합니다). 나는 또한 R이 아닌 Python으로 변환하는 데 열려 있습니다.

# For each column find the index of buy, sell (and the corresponding empty cell)
idx = apply(data, 2, function(x) which(x %in% c("buy","sell",""))[1:3] )
# NA indicates that the empty cell is the last
idx[is.na(idx)] = nrow(data)

i = 0
buy = list( apply(idx, 2, function(x) {
  i <<- i+1
  data[seq(x[1]+1,x[2]),i]
}) )
i = 0
sell = list( apply(idx, 2, function(x) {
  i <<- i+1
  data[seq(x[2]+1,x[3]),i]
}) )
Wietze314

나는 하나의 긴 형식 데이터 세트에서 2 열의 3 세트를 먼저 결합하기로 결정했습니다. 그런 다음 이월 된 마지막 알려진 값 ( tidyr::fill)으로 위치 열을 채우고 열 값을 필터링하여 쓰레기를 필터링합니다.

다음은 작업 예입니다.

library(dplyr)
library(tidyr)

str <- "
time, time1, time,  time2,  time, time3
buy,       , buy,        ,  buy,    
factor1,  1, factor1,    2, factor1,  3
factor2,  4, factor2,    5, factor2,  6
factor1,  7, factor1,    8, factor1,  9
factor2, 10, factor2,   11, factor2, 12
factor1, 13, sell,        , factor1, 14
factor2, 15, factor1,   16, factor2, 17
sell,      , factor2,   18, factor1, 19
factor1, 20, ,            , factor2, 21,
factor2, 22, ,            , sell,     
,          , ,            , factor1, 23
,          , ,            , factor2, 24
,          , ,            , factor1, 25
,          , ,            , factor2, 26
"

strfile <- textConnection(str)

raw <- read.table(strfile, header = F, sep = ",", stringsAsFactors = F)

library(dplyr)
library(tidyr)
dt <- do.call(rbind, lapply(1:3, function(x) {
  p <- raw[,c(x*2-1,x*2)]
  names(p) <- c('factor', 'value')
  p$time <- x
  p
  })
)

dt %>% 
  mutate(position = if_else(trimws(factor) %in% c('buy','sell'),as.character(factor),as.character(NA)),
         value = as.numeric(value)) %>%
  fill(position) %>% filter(!is.na(value))

결과:

factor value time position
1   factor1     1    1      buy
2   factor2     4    1      buy
3   factor1     7    1      buy
4   factor2    10    1      buy
5   factor1    13    1      buy
6   factor2    15    1      buy
7   factor1    20    1     sell
8   factor2    22    1     sell
9   factor1     2    2      buy
10  factor2     5    2      buy
11  factor1     8    2      buy
12  factor2    11    2      buy
13  factor1    16    2     sell
14  factor2    18    2     sell
15  factor1     3    3      buy
16  factor2     6    3      buy
17  factor1     9    3      buy
18  factor2    12    3      buy
19  factor1    14    3      buy
20  factor2    17    3      buy
21  factor1    19    3      buy
22  factor2    21    3      buy
23  factor1    23    3     sell
24  factor2    24    3     sell
25  factor1    25    3     sell
26  factor2    26    3     sell

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

콘솔 출력 헤더가 열과 정렬되지 않음

분류에서Dev

길이가 같지 않은 두 벡터간에 차이가있는 pandas 데이터 프레임 만들기

분류에서Dev

길이가 같지 않은 목록에서 데이터 프레임 결합

분류에서Dev

R에서 길이가 같지 않은 파일 행에 쓰기

분류에서Dev

플렉스 열에서 행 높이가 같지 않음

분류에서Dev

길이가 같지 않은 여러 Numpy 배열의 길이 일치

분류에서Dev

전역 배열을 선언해야하지만 내 변수가 작동하지 않습니다. 다음과 같은 내용이 있습니다.

분류에서Dev

MATLAB에서 같지 않은 두 배열의 길이가 일치합니까?

분류에서Dev

콘솔 출력 헤더가 열과 정렬되지 않음

분류에서Dev

Eclipse SWT 레이블 텍스트가 콘솔과 같은 문자열을 표시하지 않음

분류에서Dev

헤더가있는 html 여러 열 정렬되지 않은 목록

분류에서Dev

출력과 길이가 같은 문자열로 출력 래핑

분류에서Dev

Java의 String에 속성 길이 (배열과 같은)가 아닌 length () 메서드가있는 이유는 무엇입니까?

분류에서Dev

길이가 n 인 m 개의 비트 문자열이 주어지면 각 위치에서 1 비트 문자열에만 세트 비트가있는 것과 같은 정확히 k 비트 문자열 세트가 있는지 확인합니다.

분류에서Dev

길이가 n 인 m 개의 비트 문자열이 주어지면 각 위치에서 1 비트 문자열에만 세트 비트가있는 것과 같은 정확히 k 비트 문자열 세트가 있는지 확인합니다.

분류에서Dev

빈 및 가변 길이 열이있는 구분되지 않은 텍스트 파일에 탭 추가

분류에서Dev

오류 : 길이 (x)가 1과 같지 않음

분류에서Dev

스크롤에서 헤더가 움직이지 않음-Javascript

분류에서Dev

AWK : 열 개수가 헤더 개수와 같지 않고 데이터에 큰 따옴표 안에 쉼표가있는 데이터를 제거하는 방법

분류에서Dev

배열 길이에 도달하면 setInterval 함수가 중지되지 않음

분류에서Dev

키 속성에 따라 길이가 같지 않은 해시 배열 병합

분류에서Dev

Ionic 헤더 이미지와 텍스트가 같은 줄에 표시되지 않음

분류에서Dev

길이가 같지 않은 배열 추가

분류에서Dev

Dolphin은 새 이름을 묻지 않고 같은 폴더에 파일 복사본을 만들 수 있습니까?

분류에서Dev

Java 인쇄 문자열과 int가 같은 줄에 있음

분류에서Dev

배열 최대 길이가 작동하지 않음

분류에서Dev

PHP-문자열이 비어 있지 않거나 다음과 같지 않은 첫 번째 문자가 있는지 확인

분류에서Dev

Jquery .push가 배열 길이를 늘리지 않음

분류에서Dev

길이가 같지 않은 2 개의 날짜 열 일치

Related 관련 기사

  1. 1

    콘솔 출력 헤더가 열과 정렬되지 않음

  2. 2

    길이가 같지 않은 두 벡터간에 차이가있는 pandas 데이터 프레임 만들기

  3. 3

    길이가 같지 않은 목록에서 데이터 프레임 결합

  4. 4

    R에서 길이가 같지 않은 파일 행에 쓰기

  5. 5

    플렉스 열에서 행 높이가 같지 않음

  6. 6

    길이가 같지 않은 여러 Numpy 배열의 길이 일치

  7. 7

    전역 배열을 선언해야하지만 내 변수가 작동하지 않습니다. 다음과 같은 내용이 있습니다.

  8. 8

    MATLAB에서 같지 않은 두 배열의 길이가 일치합니까?

  9. 9

    콘솔 출력 헤더가 열과 정렬되지 않음

  10. 10

    Eclipse SWT 레이블 텍스트가 콘솔과 같은 문자열을 표시하지 않음

  11. 11

    헤더가있는 html 여러 열 정렬되지 않은 목록

  12. 12

    출력과 길이가 같은 문자열로 출력 래핑

  13. 13

    Java의 String에 속성 길이 (배열과 같은)가 아닌 length () 메서드가있는 이유는 무엇입니까?

  14. 14

    길이가 n 인 m 개의 비트 문자열이 주어지면 각 위치에서 1 비트 문자열에만 세트 비트가있는 것과 같은 정확히 k 비트 문자열 세트가 있는지 확인합니다.

  15. 15

    길이가 n 인 m 개의 비트 문자열이 주어지면 각 위치에서 1 비트 문자열에만 세트 비트가있는 것과 같은 정확히 k 비트 문자열 세트가 있는지 확인합니다.

  16. 16

    빈 및 가변 길이 열이있는 구분되지 않은 텍스트 파일에 탭 추가

  17. 17

    오류 : 길이 (x)가 1과 같지 않음

  18. 18

    스크롤에서 헤더가 움직이지 않음-Javascript

  19. 19

    AWK : 열 개수가 헤더 개수와 같지 않고 데이터에 큰 따옴표 안에 쉼표가있는 데이터를 제거하는 방법

  20. 20

    배열 길이에 도달하면 setInterval 함수가 중지되지 않음

  21. 21

    키 속성에 따라 길이가 같지 않은 해시 배열 병합

  22. 22

    Ionic 헤더 이미지와 텍스트가 같은 줄에 표시되지 않음

  23. 23

    길이가 같지 않은 배열 추가

  24. 24

    Dolphin은 새 이름을 묻지 않고 같은 폴더에 파일 복사본을 만들 수 있습니까?

  25. 25

    Java 인쇄 문자열과 int가 같은 줄에 있음

  26. 26

    배열 최대 길이가 작동하지 않음

  27. 27

    PHP-문자열이 비어 있지 않거나 다음과 같지 않은 첫 번째 문자가 있는지 확인

  28. 28

    Jquery .push가 배열 길이를 늘리지 않음

  29. 29

    길이가 같지 않은 2 개의 날짜 열 일치

뜨겁다태그

보관