Quy trình phân tích thống kê và viết báo cáo


185

Có ai có bất kỳ sự khôn ngoan nào trong quy trình làm việc để phân tích dữ liệu liên quan đến viết báo cáo tùy chỉnh không? Ca sử dụng về cơ bản là thế này:

  1. Khách hàng ủy thác một báo cáo sử dụng phân tích dữ liệu, ví dụ ước tính dân số và bản đồ liên quan cho một quận nước.

  2. Nhà phân tích tải xuống một số dữ liệu, trộn dữ liệu và lưu kết quả (ví dụ: thêm một cột cho dân số trên mỗi đơn vị hoặc đặt lại dữ liệu dựa trên ranh giới quận).

  3. Nhà phân tích phân tích dữ liệu được tạo trong (2), gần với mục tiêu của cô ấy, nhưng thấy rằng cần nhiều dữ liệu hơn và do đó quay trở lại (1).

  4. Rửa lặp lại cho đến khi các bảng và đồ họa đáp ứng QA / QC và đáp ứng máy khách.

  5. Viết báo cáo kết hợp bảng và đồ họa.

  6. Năm tới, khách hàng vui vẻ quay lại và muốn cập nhật. Điều này sẽ đơn giản như cập nhật dữ liệu ngược dòng bằng cách tải xuống mới (ví dụ: lấy giấy phép xây dựng từ năm ngoái) và nhấn nút "RECALCULATE", trừ khi thông số kỹ thuật thay đổi.

Hiện tại, tôi chỉ bắt đầu một thư mục và quảng cáo nó tốt nhất có thể. Tôi muốn một cách tiếp cận có hệ thống hơn, vì vậy tôi hy vọng ai đó đã tìm ra điều này ... Tôi sử dụng hỗn hợp các công cụ bảng tính, SQL, ARCGIS, R và Unix.

Cảm ơn!

Tái bút

Dưới đây là một Makefile cơ bản kiểm tra sự phụ thuộc vào các bộ dữ liệu trung gian khác nhau (w / .RDatahậu tố) và tập lệnh ( .Rhậu tố). Sử dụng dấu thời gian để kiểm tra các phụ thuộc, vì vậy nếu bạn touch ss07por.csv, nó sẽ thấy rằng tệp này mới hơn tất cả các tệp / mục tiêu phụ thuộc vào nó và thực thi các tập lệnh đã cho để cập nhật chúng theo. Đây vẫn là một công việc đang tiến triển, bao gồm một bước để đưa vào cơ sở dữ liệu SQL và một bước cho một ngôn ngữ tạo khuôn mẫu như sweave. Lưu ý rằng Make dựa vào các tab theo cú pháp của nó, vì vậy hãy đọc hướng dẫn trước khi cắt và dán. Thưởng thức và đưa ra phản hồi!

http://www.gnu.org/software/make/manual/html_node/index.html#Top

R = / nhà / wsprague / R-2.9.2 / thùng / R

Persondata.RData: ImportData.R ../../DATA/ss07por.csv Hàm.R
   $ R --slave -f ImportData.R

Persondata.Munged.RData: MungeData.R Persondata.RData Hàm.R
      $ R --slave -f MungeData.R

report.txt: TabulationAndGraph.R Persondata.Munged.RData Hàm.R
      $ R --slave -f TabulationAndGraph.R> report.txt


10
Ôi trời. Những người vào đây, hãy cẩn thận : câu trả lời cho câu hỏi này là tuyệt vời năm năm trước. Họ đang tất cả hoàn toàn lỗi thời. Ngày nay, tôi sẽ khuyên bạn không nên làm theo bất kỳ câu trả lời nào ở đây. Hiện nay có nhiều công cụ tốt hơn có sẵn. Để bắt đầu, tôi sẽ đề cập đến một dự án ví dụ sử dụng Makefiles và Đan .
Konrad Rudolph

R Notebook , trình điều khiển odbc , gitgit lfs đều được gửi đến cho vấn đề này.
DaveRGP

Tôi thực sự khuyên bạn nên thiết lập dự án theo các nguyên tắc được nêu ra, ví dụ ở đây ( github.com/ropensci/rrrpkg ). Cái gọi là "nghiên cứu tổng hợp" là thần thánh khi thực hiện khoa học dữ liệu tái tạo
Kresten

Câu trả lời:


195

Tôi thường chia các dự án của mình thành 4 phần:

  1. tải.R
  2. sạch sẽ
  3. func.R
  4. làm.R

load.R: Chăm sóc tải trong tất cả các dữ liệu cần thiết. Thông thường, đây là một tệp ngắn, đọc dữ liệu từ các tệp, URL và / hoặc ODBC. Tùy thuộc vào dự án tại thời điểm này, tôi sẽ viết ra không gian làm việc bằng cách sử dụng save()hoặc chỉ giữ mọi thứ trong bộ nhớ cho bước tiếp theo.

sạch.R: Đây là nơi tất cả các công cụ xấu xí sống - chăm sóc các giá trị còn thiếu, hợp nhất các khung dữ liệu, xử lý các ngoại lệ.

func.R: Chứa tất cả các chức năng cần thiết để thực hiện phân tích thực tế. source()'Tập tin này sẽ không có tác dụng phụ nào ngoài việc tải lên các định nghĩa hàm. Điều này có nghĩa là bạn có thể sửa đổi tệp này và tải lại mà không cần phải quay lại các bước 1 & 2 lặp lại, việc này có thể mất nhiều thời gian để chạy cho các tập dữ liệu lớn.

do.R: Gọi các hàm được định nghĩa trong func.R để thực hiện phân tích và tạo biểu đồ và bảng.

Động lực chính cho thiết lập này là để làm việc với dữ liệu lớn, theo đó bạn không muốn phải tải lại dữ liệu mỗi khi bạn thực hiện thay đổi sang bước tiếp theo. Ngoài ra, giữ cho mã của tôi được ngăn cách như thế này có nghĩa là tôi có thể quay lại một dự án đã bị lãng quên từ lâu và đọc nhanh tải.R và tìm ra dữ liệu nào tôi cần cập nhật, sau đó xem do.R để tìm ra phân tích nào được thực hiện.


12
Đó là một quy trình làm việc thực sự tốt. Tôi đã vật lộn với việc thiết kế một quy trình làm việc và khi tôi hỏi những người xung quanh, họ thường trả lời, "cái gì? Quy trình công việc? Hả?" Vì vậy, tôi nghĩ rằng họ không nghĩ về điều này nhiều. Tôi sẽ áp dụng mô hình LCFD của Reichian.
JD Long

1
điều này khá gần với quy trình làm việc của tôi, tôi thường có một tập lệnh nhập, tập lệnh phân tích và tập lệnh báo cáo
kpierce8

4
LCFD: Dữ liệu ít gặp nhất
William Doane

2
Có một video thuyết trình hay + slide của Jeromy Anglim kết hợp quy trình làm việc này tại đây vcasmo.com/video/drewconway/10362
David LeBauer


94

Nếu bạn muốn xem một số ví dụ, tôi có một vài dự án phân tích và làm sạch dữ liệu nhỏ (và không quá nhỏ) có sẵn trực tuyến. Trong hầu hết, bạn sẽ tìm thấy một tập lệnh để tải xuống dữ liệu, một tập lệnh để dọn sạch và một số để thực hiện thăm dò và phân tích:

Gần đây tôi đã bắt đầu đánh số các tập lệnh, vì vậy nó hoàn toàn rõ ràng theo thứ tự chúng nên được chạy. (Nếu tôi cảm thấy thực sự lạ mắt tôi đôi khi sẽ làm cho nó để kịch bản thăm dò sẽ gọi kịch bản làm sạch nó sẽ gọi kịch bản tải về, từng làm công việc tối thiểu cần thiết - thường là bằng cách kiểm tra sự hiện diện của các file đầu ra với file.exists. Tuy nhiên, hầu hết các lần này có vẻ như quá mức cần thiết).

Tôi sử dụng git cho tất cả các dự án của mình (một hệ thống quản lý mã nguồn) để dễ dàng cộng tác với những người khác, xem những gì đang thay đổi và dễ dàng quay trở lại các phiên bản trước.

Nếu tôi làm một báo cáo chính thức, tôi thường giữ R và latex riêng biệt, nhưng tôi luôn đảm bảo rằng tôi có thể sourcemã R của mình để tạo ra tất cả mã và đầu ra mà tôi cần cho báo cáo. Đối với các loại báo cáo mà tôi làm, tôi thấy việc này dễ dàng và sạch sẽ hơn là làm việc với latex.


Tôi đã nhận xét về Makefiles ở trên, nhưng bạn có thể muốn xem xét chúng - đó là ngôn ngữ kiểm tra phụ thuộc truyền thống. Ngoài ra - tôi sẽ cố gắng học ggplot2 - trông thật tuyệt!
chờ đợi vào

Tôi thích ý tưởng có một cách để xác định các phụ thuộc giữa các tệp, nhưng phải học m4 là một bước ngoặt lớn. Tôi ước có một cái gì đó giống như được viết trong R.
hadley

2
Đối với các phụ thuộc, bạn cũng có thể làm điều đó trong các tệp R. Thay vì làm source("blah.R"), hãy kiểm tra xem (các) biến cần thiết có tồn tại trước không : if (!exists("foo")) { source("blah.R") }. Điều đó tránh được việc chạy lại phụ thuộc nếu họ đã chạy.
ness101

17

Tôi đồng ý với những người trả lời khác: Sweave rất tuyệt vời khi viết báo cáo với R. Và việc xây dựng lại báo cáo với kết quả được cập nhật cũng đơn giản như gọi lại chức năng Sweave. Nó hoàn toàn khép kín, bao gồm tất cả các phân tích, dữ liệu, v.v. Và bạn có thể kiểm soát phiên bản toàn bộ tệp.

Tôi sử dụng plugin StatET cho Eclipse để phát triển các báo cáo và Sweave được tích hợp (Eclipse nhận ra định dạng latex, v.v.). Trên Windows, thật dễ dàng để sử dụng MikTEX .

Tôi cũng sẽ nói thêm rằng bạn có thể tạo các báo cáo đẹp với Beamer . Tạo một báo cáo bình thường chỉ đơn giản như vậy. Tôi đã bao gồm một ví dụ dưới đây lấy dữ liệu từ Yahoo! và tạo một biểu đồ và bảng (sử dụng quantmod). Bạn có thể xây dựng báo cáo này như vậy:

Sweave(file = "test.Rnw")

Đây là tài liệu Beamer:

% 
\documentclass[compress]{beamer}
\usepackage{Sweave}
\usetheme{PaloAlto} 
\begin{document}

\title{test report}
\author{john doe}
\date{September 3, 2009} 

\maketitle

\begin{frame}[fragile]\frametitle{Page 1: chart}

<<echo=FALSE,fig=TRUE,height=4, width=7>>=
library(quantmod)
getSymbols("PFE", from="2009-06-01")
chartSeries(PFE)
@

\end{frame}


\begin{frame}[fragile]\frametitle{Page 2: table}

<<echo=FALSE,results=tex>>=
library(xtable)
xtable(PFE[1:10,1:4], caption = "PFE")
@

\end{frame}

\end{document}

6
Đừng tin rằng một báo cáo Sweave có thể được sao chép cho đến khi bạn kiểm tra nó trên một máy sạch. Thật dễ dàng để có những phụ thuộc bên ngoài ngầm.
John D. Cook

16

Tôi chỉ muốn thêm vào, trong trường hợp bất kỳ ai bỏ lỡ nó, rằng có một bài viết tuyệt vời trên blog learnr về việc tạo các báo cáo lặp đi lặp lại với gói bia của Jeffrey Horner . Matt và Kevin đều đề cập đến bia ở trên. Tôi đã không thực sự sử dụng nó nhiều.

Các mục theo một quy trình công việc tốt, vì vậy nó cũng đáng để đọc:

  1. Chuẩn bị dữ liệu.
  2. Chuẩn bị mẫu báo cáo.
  3. Sản xuất báo cáo.

Trên thực tế, việc tạo báo cáo khi hai bước đầu tiên hoàn thành rất đơn giản:

library(tools)
library(brew)
brew("population.brew", "population.tex")
texi2dvi("population.tex", pdf = TRUE)

Trong việc sửa một lỗi ngữ pháp nhỏ, tôi đã làm rối địa chỉ wordpress.com. Vì vậy, liên kết chính xác là learnr.wordpress.com/2009/09/09/ Khăn
learnr

14

Để tạo báo cáo tùy chỉnh, tôi thấy hữu ích khi kết hợp nhiều mẹo hiện có được đề xuất ở đây.

Tạo báo cáo: Một chiến lược tốt để tạo báo cáo liên quan đến sự kết hợp của Sweave, make và R.

Biên tập viên: Các biên tập viên giỏi để chuẩn bị các tài liệu Sweave bao gồm:

  • StatET và Eclipse
  • Emacs và ESS
  • Vim và Vim-R
  • Studio R

Tổ chức mã: Về mặt tổ chức mã, tôi thấy hai chiến lược hữu ích:


7

Tôi sử dụng Sweave cho khía cạnh sản xuất báo cáo này, nhưng tôi cũng đã nghe về gói bia - mặc dù tôi chưa xem xét về nó.

Về cơ bản, tôi có một số khảo sát mà tôi đưa ra số liệu thống kê tóm tắt. Cùng một cuộc khảo sát, báo cáo giống nhau mỗi lần. Tôi đã xây dựng một mẫu Sweave cho các báo cáo (mất một chút công việc). Nhưng một khi công việc hoàn thành, tôi có một tập lệnh R riêng cho phép tôi chỉ ra dữ liệu mới. Tôi nhấn "Go", Sweave bỏ ra một vài tệp .tex và tôi chạy một đoạn script Python nhỏ để pdflatex tất cả chúng. Người tiền nhiệm của tôi đã dành ~ 6 tuần mỗi năm cho các báo cáo này; Tôi dành khoảng 3 ngày (chủ yếu để làm sạch dữ liệu; ký tự thoát là nguy hiểm).

Bây giờ rất có thể có những cách tiếp cận tốt hơn, nhưng nếu bạn quyết định đi theo con đường này, hãy cho tôi biết - Tôi đã có ý định đưa ra một số hack của Sweave của tôi, và đó sẽ là một cú đá tốt trong quần vì thế.


Rất thích nhìn thấy một số "hack" Sweave này. Nó làm tôi đau đầu!
Brandon Bertelsen

7

Tôi sẽ đề xuất một cái gì đó theo một hướng khác với các trình đệ trình khác, dựa trên thực tế là bạn đã hỏi cụ thể về quy trình làm việc của dự án , thay vì các công cụ . Giả sử bạn tương đối hài lòng với mô hình sản xuất tài liệu của mình, có vẻ như các thách thức của bạn thực sự có thể tập trung nhiều hơn vào các vấn đề về theo dõi phiên bản, quản lý tài sản và quy trình xem xét / xuất bản.

Nếu điều đó nghe có vẻ đúng, tôi sẽ đề nghị xem xét một công cụ tài liệu / quản lý nguồn / bán vé tích hợp như Redmine . Giữ các tạo phẩm dự án liên quan như các tác vụ đang chờ xử lý, các luồng thảo luận và các tệp dữ liệu / mã được phiên bản cùng nhau có thể là một trợ giúp tuyệt vời ngay cả đối với các dự án nằm ngoài bailiwick "lập trình" truyền thống.


5

Đồng ý rằng Sweave là con đường để đi, với xtable để tạo các bảng LaTeX. Mặc dù tôi đã không dành quá nhiều thời gian để làm việc với họ, nhưng gói tikzDevice được phát hành gần đây trông rất hứa hẹn, đặc biệt là khi kết hợp với pgfSweave (mà theo như tôi biết chỉ có trên rforge.net vào thời điểm này - có một liên kết đến r-forge từ đó, nhưng hiện tại nó không đáp ứng cho tôi).

Giữa hai loại, bạn sẽ có được định dạng nhất quán giữa văn bản và số liệu (phông chữ, v.v.). Với bia, những thứ này có thể tạo thành chén thánh của thế hệ báo cáo.


pgfSweave hiện đang trong "limbo phát triển" vì các nhà phát triển đã không có thời gian để kết hợp tikzDevice mới. Hiện tại, chúng tôi khuyên bạn nên sử dụng tikzDevice từ trong các tài liệu Sweave thông thường-- người dùng chỉ phải chịu trách nhiệm mở / đóng thiết bị và \ bao gồm {} kết quả đầu ra.
Sharpie

@Sharpie: Có bản cập nhật nào về trạng thái phát triển của pgfSweave không? Nó trông tuyệt vời, nhưng dường như không hoạt động trên bất kỳ hệ thống nào tôi đã thử.
Ari B. Friedman

@ gsk3 Nhà phát triển khác đã rất tích cực trong việc cập nhật pgfSweave và đã thực hiện rất nhiều công việc kể từ khi tôi đăng bình luận đó. Trụ sở để github.com/cameronbracken/pgfSweave để theo dõi sự phát triển. Nếu gói không hoạt động cho bạn, chúng tôi rất muốn nhận được báo cáo lỗi để chúng tôi có thể sửa nó.
Sharpie

@Sharpie: Tuyệt, cảm ơn. Tôi đã chuyển tiếp tin nhắn của bạn đến bạn tôi, người đã đặt nhiều công việc vào đó hơn tôi có. Nếu anh ấy không nộp báo cáo lỗi sớm thì tôi sẽ cùng nhau làm một. Nó trông giống như một gói tuyệt vời; Cảm ơn tất cả các công việc khó khăn.
Ari B. Friedman


4

"Make" là tuyệt vời vì (1) bạn có thể sử dụng nó cho tất cả công việc của mình bằng bất kỳ ngôn ngữ nào (không giống như Sweave và Brew), (2) nó rất mạnh (đủ để xây dựng tất cả phần mềm trên máy của bạn) và (3) nó tránh lặp lại công việc. Điểm cuối cùng này rất quan trọng đối với tôi vì rất nhiều công việc chậm; Khi tôi tạo một tập tin, tôi muốn xem kết quả sau vài giây, chứ không phải mất hàng giờ để tạo lại các số liệu.


+1 để thực hiện; Tuy nhiên, tôi không thấy làm cho không tương thích với Sweave. Thay vào đó khi tôi tạo báo cáo, hãy thực hiện cuộc gọi Sweave (và những thứ khác).
Jeromy Anglim

3

Tôi sử dụng các mẫu dự án cùng với R studio, hiện tại của tôi chứa các thư mục sau:

  • info : pdf, powerpoint, docs ... sẽ không được sử dụng bởi bất kỳ tập lệnh nào
  • data input : dữ liệu sẽ được sử dụng bởi các tập lệnh của tôi nhưng không được tạo bởi chúng
  • data output : dữ liệu được tạo bởi các tập lệnh của tôi để sử dụng thêm nhưng không phải là một báo cáo thích hợp.
  • reports : Chỉ các tệp thực sự sẽ được hiển thị cho người khác
  • R : Tất cả các tập lệnh R
  • SAS : Bởi vì đôi khi tôi phải: '(

Tôi đã viết các hàm tùy chỉnh để tôi có thể gọi smart_save(x,y)hoặc smart_load(x)lưu hoặc tải RDS filesđến và từ data outputthư mục (các tệp có tên biến) để tôi không bị làm phiền pathstrong quá trình phân tích.

Một chức năng tùy chỉnh new_projecttạo một thư mục dự án được đánh số, sao chép tất cả các tệp từ mẫu, đổi tên RProjtệp và chỉnh sửa các setwdcuộc gọi và đặt thư mục làm việc sang dự án mới.

Tất cả các Rtập lệnh nằm trong Rthư mục, được cấu trúc như sau:


00_main.R
  • setwd
  • gọi các kịch bản 1 đến 5

00_functions.R
  • Tất cả các chức năng và chỉ có các chức năng ở đó, nếu có quá nhiều tôi sẽ tách nó thành nhiều phần, tất cả đều được đặt tên như thế 00_functions_something.R, đặc biệt nếu tôi dự định tạo ra một gói trong số chúng tôi sẽ tách chúng ra

00_explore.R
  • một loạt các đoạn script mà tôi đang kiểm tra mọi thứ hoặc khám phá dữ liệu của mình
  • Đó là tập tin duy nhất mà tôi được phép lộn xộn.

01_initialize.R
  • Được thực hiện với một cuộc gọi đến một initialize_general.Rtập lệnh chung hơn từ thư mục mẫu của tôi để tải các gói và dữ liệu tôi luôn sử dụng và không bận tâm đến không gian làm việc của mình
  • tải 00_functions.R(đã được chuẩn bị sẵn)
  • tải thêm thư viện
  • đặt biến toàn cục

02_load data.R
  • tải csv/txt xlsx RDS, có một dòng nhận xét được điền sẵn cho mọi loại tệp
  • hiển thị tập tin hava nào được tạo trong không gian làm việc

03_pull data from DB.R
  • Sử dụng dbplyrđể tìm nạp các bảng được lọc và nhóm từ DB
  • một số dòng nhận xét được điền sẵn để thiết lập kết nối và tìm nạp.
  • Giữ cho hoạt động phía khách hàng ở mức tối thiểu
  • Không có hoạt động phía máy chủ bên ngoài tập lệnh này
  • Hiển thị tập tin nào đã được tạo trong không gian làm việc
  • Lưu các biến này để chúng có thể được tải lại nhanh hơn

Khi nó được thực hiện một khi tôi tắt query_dbboolean và dữ liệu sẽ được tải lại từ RDSlần sau.

Có thể xảy ra việc tôi phải giới thiệu lại dữ liệu cho DB, nếu vậy tôi sẽ tạo các bước bổ sung.


04_Build.R
  • Dữ liệu tranh cãi, tất cả những niềm vui dplyr/ tidyrthứ đi có
  • hiển thị tập tin nào đã được tạo trong không gian làm việc
  • lưu các biến này

Khi nó được thực hiện một khi tôi tắt buildboolean và dữ liệu sẽ được tải lại từ RDSlần sau.


05_Analyse.R
  • Tóm tắt, mô hình ...
  • báo cáo excelcsvtập tin

95_build ppt.R
  • mẫu cho báo cáo powerpoint bằng cách sử dụng officer

96_prepare markdown.R
  • setwd
  • tải dữ liệu
  • đặt tham số đánh dấu nếu cần
  • render

97_prepare shiny.R
  • setwd
  • tải dữ liệu
  • Đặt tham số sáng bóng nếu cần
  • runApp

98_Markdown report.Rmd
  • Mẫu báo cáo

99_Shiny report.Rmd
  • Mẫu ứng dụng

2

Để viết báo cáo sơ bộ nhanh chóng hoặc gửi email cho đồng nghiệp, tôi thấy rằng việc sao chép và dán các lô vào MS Word hoặc trang email hoặc wiki có thể rất hiệu quả - thường là tốt nhất là ảnh chụp màn hình bitmap (ví dụ trên mac, Apple -Shift- (Ctrl) -4). Tôi nghĩ rằng đây là một kỹ thuật bị đánh giá thấp.

Đối với một báo cáo cuối cùng, việc viết các hàm R để dễ dàng tạo lại tất cả các ô (dưới dạng tệp) là rất quan trọng. Phải mất nhiều thời gian hơn để mã hóa này.

Về các vấn đề quy trình công việc lớn hơn, tôi thích câu trả lời của Hadley về việc liệt kê các tệp mã / dữ liệu cho luồng làm sạch và phân tích. Tất cả các dự án phân tích dữ liệu của tôi có cấu trúc tương tự.


2

Tôi sẽ thêm giọng nói của mình để thề. Để phân tích nhiều bước phức tạp, bạn có thể sử dụng tệp tạo tệp để chỉ định các phần khác nhau. Có thể ngăn chặn việc phải lặp lại toàn bộ phân tích nếu chỉ một phần đã thay đổi.


0

Tôi cũng làm những gì Josh Reich làm, chỉ có tôi làm việc đó tạo ra các gói R cá nhân của mình, vì nó giúp tôi cấu trúc mã và dữ liệu của mình, và cũng khá dễ dàng để chia sẻ chúng với những người khác.

  1. tạo gói của tôi
  2. tải
  3. dọn dẹp
  4. chức năng
  5. làm

tạo gói của tôi: devtools :: tạo ('pack_name')

tải và dọn dẹp: Tôi tạo các tập lệnh trong data-raw / thư mục con của gói để tải, làm sạch và lưu trữ các đối tượng dữ liệu kết quả trong gói bằng devtools :: use_data (object_name). Sau đó, tôi biên dịch gói. Từ giờ trở đi, thư viện gọi (pack_name) sẽ cung cấp những dữ liệu này (và chúng không được tải cho đến khi cần thiết).

các hàm: Tôi đặt các hàm cho các phân tích của mình vào R / thư mục con của gói của mình và chỉ xuất các hàm cần được gọi từ bên ngoài (chứ không phải các hàm trợ giúp, có thể ẩn đi).

do: Tôi tạo một tập lệnh sử dụng dữ liệu và các chức năng được lưu trữ trong gói của tôi. (Nếu việc phân tích chỉ cần được thực hiện một lần, tôi cũng có thể đưa tập lệnh này vào dữ liệu - raw / thư mục con, chạy nó và lưu trữ kết quả trong gói để có thể truy cập dễ dàng.)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.