2017-02-20 6 views
0

У меня есть ежемесячные цифры на листе excel, но каждую неделю идет с итогом и ниже каждой недели есть сводка недельных цифр. Я добавил скриншоты примера.чтение CSV, XLX и Xlxs файл с текстом между данными

Я хочу прочитать этот файл в R с помощью первых нескольких строк (я сделал это с помощью SKIP) и без сводки, которая находится в конце каждой недели. В некоторых файлах они объединяли две недели в одном сводке.

hint У меня 350 файлов в этом формате, поэтому я не могу пройти через них один за другим.

enter image description here

col1 #

+1

Пожалуйста, не публикуйте фотографии. Poste copy'n'apasteable sample data и ожидаемый результат. Вы отметили это с помощью 'sql-server'? Почему бы не использовать 'VBA' в Excel для подготовки ваших данных? Предоставьте несколько подробностей, чего вы пытаетесь достичь. Пожалуйста, прочитайте [Как задать хороший вопрос SQL] (http://meta.stackoverflow.com/questions/271055/tips-for-asking-a-good-structured-query-language-sql-question/271056) и [ Как создать MCVE] (http://stackoverflow.com/help/mcve) – Shnugo

+0

привет большое спасибо за ваш ответ, я я новичок в этом и не имею ни малейшего понятия, мошенник, чтобы задать вопрос здесь (извините) У меня есть некоторый опыт использования R/SQL, я никогда не использовал VBA, и у меня есть круглые 350 файлов, которые нужно пройти, прежде чем импортировать их в SQL DB. –

+0

Используйте ['tidyxl'] (https: //cran.r-project .org/web/packages/tidyxl/index.html) для файлов Excel. 'readLines()' или 'readr :: read_lines()' плюс ручная обработка данных для CSV – hrbrmstr

ответ

0

Вы можете импортировать данные из определенного диапазона, как это.

library(xlsx) 
# first example subset; call it ss1 
# assume first row is not a header; otherwise requires header = T 
ss1 <- read.xlsx("C:/Users/your_path/test.xlsx", sheetIndex = 1, rowIndex = 4:5, colIndex = 2:3) 

# second example subset; call it ss2 
# just the same except worksheet index = 2 
ss2 <- read.xlsx("C:/Users/your_path/test.xlsx", sheetIndex = 2, rowIndex = 4:5, colIndex = 2:3) 

В противном случае, если бы я был ты, я бы создать небольшой сценарий VBA, чтобы получить данные выпрямлены в Excel, как копировать/вставить соответствующие наборы данных на новый лист, или книги. Затем используйте R для импорта данных из недавно очищенного набора данных.

+0

спасибо Ryguy за ваш ответ, диапазон недель в листе меняется все время. например, у меня нет начальной строки исправления для данных недель в листе excel. Я никогда не использовал скрипт VBA, вы можете предложить любые полезные скрипты VBA. –

+0

Ну, я дал вам то, что вам нужно. Вы на самом деле пытались это сделать? Я так не думаю. Попробуйте и посмотрите, сможете ли вы заставить его работать. Если у вас есть вопросы, вы можете опубликовать их на форуме для обсуждения в Excel-VBA, и здесь есть форум для обсуждения VBA. Если вы развиваете некоторые приличные навыки и некоторые достойные навыки Excel/VBA, вы можете делать некоторые потрясающие вещи! – ryguy72

0

Я сейчас работаю, и я не вижу вашего изображения. Почти все заблокировано из моего офиса. Это чудо, что я даже могу вообще заниматься любой работой. Во всяком случае, я помню, у вас была куча пустых строк, верно. Запустите макрос ниже, чтобы скопировать все NON-blank строки из Sheet1 в Sheet2. Затем из Sheet2 загрузите свои данные в R.

Sub CopyNonBlanks() 
    Dim LastRow As Long 
    Dim i As Long, j As Long 

    'Find the last used row in a Column: column A in this example 
    With Worksheets("Sheet1") 
     LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row 
    End With 

    'MsgBox (LastRow) 
    'first row number where you need to paste values in Sheet1' 
    With Worksheets("Sheet2") 
     j = .Cells(.Rows.Count, "A").End(xlUp).Row + 1 
    End With 

    For i = 1 To LastRow 
     With Worksheets("Sheet1") 
      If .Cells(i, 1).Value <> "" Then 
       .Rows(i).Copy Destination:=Worksheets("Sheet2").Range("A" & j) 
       j = j + 1 
      End If 
     End With 
    Next i 
End Sub 

Затем. , ,

# read in the worksheet named Sheet2 
mydata <- read.xlsx("c:/myexcel.xlsx", sheetName = "Sheet2") 

 Смежные вопросы

  • Нет связанных вопросов^_^