LIBRECALC将单元格内容分隔为新行(逗号分隔),但复制其他内容

时间:2018-02-11 15:02:40

标签: r libreoffice libreoffice-calc libreoffice-basic

我主要使用R进行数据分析,但我希望在LibreCalc中为我的数据集提供更简单的预先修复。基本上,我有一个我正在收集的数据集用于该领域的研究,为了方便起见,我使用逗号分隔同时行为。我想,现在,将行为分为新行以供后续分析,但我想复制同一行中的其他信息。

所以,如果我有:

Time    Date     Focal    Behaviors    Actor    Target    Observer
2:00    01/22/18 QN       a, pg, w     QN       NU        AJP
2:01    01/22/18 QN       g            QN       NU        AJP
2:02    01/22/18 QN       z, 3         QN       NU        AJP

我想要:

Time    Date     Focal    Behaviors    Actor    Target    Observer
2:00    01/22/18 QN       a            QN       NU        AJP
2:00    01/22/18 QN       pg           QN       NU        AJP
2:00    01/22/18 QN       w            QN       NU        AJP
2:01    01/22/18 QN       g            QN       NU        AJP
2:02    01/22/18 QN       z            QN       NU        AJP
2:02    01/22/18 QN       3            QN       NU        AJP

请注意,为了清楚起见,我在此处列出了一些其他信息以及其他信息。此外,我还没有在LibreCalc中编码,所以如果您(善意地)提供有用的脚本,请提供注释。

我真的希望有人有一个明确的答案,感谢你有时间阅读这篇文章,无论你是否有解决方案!

另外,我在'R'下交叉列出了这个,因为有人有简洁的代码来自动导入,进行更改,并导出到LibreCalc文件(如.xls或.odf);我有多张床单。

1 个答案:

答案 0 :(得分:0)

在Calc中,转到文件 - >另存为 - >文字CSV(.csv)。在R中运行代码进行修复,然后将修改后的CSV文件导回Calc。

还有https://extensions.openoffice.org/project/R4Calc,但它需要将LO SDK与R链接,这并不容易。

目前,LibreOffice缺少Sub foo() Dim ws As Worksheet: Set ws = Sheets("Sheet1") Dim wsResult As Worksheet: Set wsResult = Sheets("Sheet2") 'declare and set your worksheet, amend as required LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row 'get the last row with data on Column A For i = 2 To LastRow 'loop through rows For x = 15 To 23 'loop through columns If ws.Cells(i, x) = "FLAG" Then 'if FLAG found in column NextFreeRow = wsResult.Cells(wsResult.Rows.Count, "A").End(xlUp).Row + 1 'get the next empty row of your wsResult sheet ws.Range("A" & i & ":C" & i).Copy 'copy first three cells in given row wsResult.Range("A" & NextFreeRow).PasteSpecial xlPasteAll 'paste into your Result sheet ws.Cells(i, x - 11).Copy 'copy the value for which there was a flag wsResult.Cells(NextFreeRow, 4).PasteSpecial xlPasteAll 'paste in the fourth cell in the sheet wsResult End If Next x Next i End Sub 来方便地拆分逗号分隔的单元格。 Lupp将其实现为在https://ask.libreoffice.org/en/question/143252/how-to-find-values-present-in-different-sheets-and-copy-them-in-calc/?answer=143289#post-id-143289基础上用Basic编写的宏。

LO Base也可用于解决此类问题,如我对同一问题的回答中所述。但是,在这种情况下,我认为导出为CSV是您的最佳选择。