Mục lục:
- Thêm tổng số hàng và cột
- Bảng tính cho bạn khả năng thực hiện tất cả các loại "Nếu như vậy? "Phân tích. Một cách để thực hiện điều này là sử dụng hàm if () trong bảng tính.
- Tính toán các tổng điều kiện có điều kiện
- Nói bạn muốn tính trung bình có điều kiện về hiệu suất nhiên liệu trong mtcars. Bạn làm điều này với hàm mean (). Bây giờ, để có được hiệu suất nhiên liệu cho xe ô tô hai bên ngưỡng 150 mã lực, hãy thử như sau:
- Để xác định tất cả các giá trị duy nhất trong dữ liệu của bạn, hãy sử dụng chức năng duy nhất (). Hãy thử tìm các giá trị duy nhất của số xi lanh trong mtcars: >> unique (mtcars $ cyl) [1] 6 4 8
- Trong R, bạn có thể sử dụng hợp nhất () hoặc phù hợp (). Hàm match () trả về một vector với các vị trí của các phần tử khớp với giá trị tra cứu của bạn.
- Hãy tưởng tượng bạn là giám đốc bán hàng của một công ty và bạn cần phải đặt mức giá tốt nhất cho sản phẩm của bạn. Nói cách khác, hãy tìm giá của một sản phẩm tối đa hóa doanh thu.
- Kết quả của bạn sẽ giống như thế này.
Video: Lọc dữ liệu trong Microsoft Excel 2010 2025
Bảng tính có lẽ là một trong những ứng dụng PC được sử dụng rộng rãi nhất - và vì lý do tốt: Bảng tính làm cho việc tính toán và các hoạt động khác dễ dàng hơn trên bảng dữ liệu. Tuy nhiên, bảng tính cũng tạo ra một số rủi ro: Chúng dễ hỏng và rất khó để gỡ lỗi. Tin tốt lành là, bạn có thể sử dụng R để làm nhiều việc giống như bạn đã từng làm trong bảng tính.
Thêm tổng số hàng và cột
Một nhiệm vụ mà bạn có thể làm thường xuyên trong một bảng tính là tính tổng của hàng hoặc cột. Cách dễ nhất để làm điều này là sử dụng các hàm rowSums () và colSums (). Tương tự, sử dụng rowMeans () và colMeans () để tính toán phương tiện.
Thử nó trên bộ đếm số liệu tích hợp. Đầu tiên, loại bỏ cột thứ năm, bởi vì nó chứa văn bản mô tả các loài mống mắt: >> Iris. num <- iris [-5]
Sau đó tính tổng và trung bình cho mỗi cột:
Hai chức năng này rất thuận lợi, nhưng bạn có thể muốn tính một số thống kê khác cho mỗi cột hoặc hàng. Có một cách dễ dàng để vượt qua các hàng hoặc cột của một mảng hoặc khung dữ liệu: hàm apply (). Ví dụ, nhận được tối thiểu của một cột là giống như áp dụng một min () chức năng để kích thước thứ hai của dữ liệu của bạn:
áp dụng (iris num, 2, phút) áp dụng (iris num, 2, tối đa)
Định dạng số
trim
-
: Giá trị logic. Nếu FALSE, nó thêm khoảng trống để điều chỉnh đúng kết quả. Nếu TRUE, nó ngăn chặn không gian hàng đầu. chữ số
-
: Có bao nhiêu chữ số quan trọng của các giá trị số để hiển thị. nsmall
-
: Số chữ số tối thiểu sau dấu thập phân. Ngoài ra, bạn kiểm soát định dạng của dấu chấm thập phân với thập phân. đánh dấu, dấu giữa khoảng
trước dấu thập phân với chữ lớn. đánh dấu và dấu giữa khoảng sau dấu thập phân với chữ số nhỏ. dấu. Ví dụ: bạn có thể in số 12345. 6789 bằng dấu phẩy làm dấu thập phân, dấu cách như dấu lớn, và dấu chấm nhỏ: >> (12345.66789, chữ số = 9, số thập phân). "12 345, 678. 9"
Là một ví dụ thực tiễn hơn, để tính toán các phương tiện của một số cột trong mtcars và sau đó in kết quả với hai chữ số sau dấu thập phân, sử dụng sau: >> x định dạng (x, số = 2, nsmall = 2) mpg cyl disp hp "20.09 "" 6. 19 "" 230. 72 "" 146. 69 "
Lưu ý rằng kết quả không còn là số nhưng là một chuỗi văn bản. Vì vậy, hãy cẩn thận khi sử dụng định dạng số - đây là bước cuối cùng trong quy trình làm việc báo cáo của bạn.
Nếu bạn đã quen thuộc với lập trình bằng các ngôn ngữ tương tự như C hoặc C ++, bạn cũng có thể thấy chức năng sprintf () hữu ích. Wrapper này cho phép bạn dán số định dạng của bạn trực tiếp vào một chuỗi.
Dưới đây là ví dụ về chuyển đổi các số thành phần trăm: >> x sprintf ("%. 1f %%", 100 * x) [1] "50. 0% "" 51. 0% "" 52. 0% "" 53. 0% "" 54. 0% "" 55. 0% "
Đây là những gì nó làm: Đối số đầu tiên của sprintf () cho biết định dạng - trong trường hợp này là"%. 1f %% ". Đối số định dạng sử dụng các ký tự đặc biệt chỉ ra rằng hàm nên thay thế chữ này bằng một biến và áp dụng một số định dạng. Các literals luôn luôn bắt đầu với biểu tượng%. Vì vậy, trong trường hợp này,%. 1f có nghĩa là định dạng giá trị được cung cấp đầu tiên như một giá trị điểm cố định với một chữ số sau dấu thập phân, và %% là một chữ nghĩa có nghĩa là in một%.
Để định dạng một số số là đơn vị tiền tệ - trong trường hợp này, đô la Mỹ - sử dụng: >> set. hạt giống (1)> x sprintf ("$% 3. 2f", x) [1] "$ 265. 51" "372 USD 12" "572 USD 85" "908 USD. 21" "$ 201. 68 "
Các sprintf () chức năng cung cấp cho bạn một cách khác để dán giá trị của bất kỳ biến vào một chuỗi:
công cụ giá sprintf ("% s chi phí $% 3. 2f ", công cụ, giá cả) [1] "Bánh mì giá $ 2.10" "cookies giá $ 4.00"
Điều gì xảy ra ở đây là bởi vì bạn cung cấp hai vectơ (mỗi cái có hai phần tử) để sprintf (), kết quả của bạn là một vector với hai phần tử. R chu kỳ qua các phần tử và đặt chúng vào các literal sprintf ().
Bạn có thể làm tất cả mọi thứ với paste () và format () mà bạn có thể làm với sprintf (), do đó bạn không thực sự cần phải sử dụng nó. Nhưng khi bạn làm, nó có thể đơn giản hóa mã của bạn.
Sắp xếp dữ liệu
Để sắp xếp dữ liệu trong R, bạn sử dụng các chức năng sắp xếp () hoặc order ().
Để sắp xếp các mtcars của khung dữ liệu theo thứ tự tăng hoặc giảm thứ tự của cột hp, sử dụng:
với (mtcars, mtcars [order (hp)]> với (mtcars, mtcars [order (hp, decreasing = TRUE),])
Chọn lựa nếu
Bảng tính cho bạn khả năng thực hiện tất cả các loại "Nếu như vậy? "Phân tích. Một cách để thực hiện điều này là sử dụng hàm if () trong bảng tính.
R cũng có chức năng if (), nhưng chủ yếu được sử dụng để điều khiển luồng trong kịch bản của bạn. Bởi vì bạn thường muốn thực hiện phép tính trên toàn bộ một vector trong R, thường thích hợp hơn để sử dụng hàm ifelse ().
Dưới đây là ví dụ về việc sử dụng ifelse () để xác định loại xe có hiệu suất nhiên liệu cao trong mtcars dữ liệu:
mtcars <- transform (mtcars, + mpgClass = ifelse (mpg mtcars [mtcars $ mpgClass == "Cao",
Tính toán các tổng điều kiện có điều kiện
Cái gì khác mà bạn có thể đã làm rất nhiều trong Excel là tính các khoản tiền điều kiện và tính với các hàm sumif () và countif ().
Bạn có thể làm tương tự trong một hai cách trong R:
Sử dụng ifelse.
Đơn giản chỉ cần tính toán mức độ quan tâm trên một tập con của dữ liệu.
Nói bạn muốn tính trung bình có điều kiện về hiệu suất nhiên liệu trong mtcars. Bạn làm điều này với hàm mean (). Bây giờ, để có được hiệu suất nhiên liệu cho xe ô tô hai bên ngưỡng 150 mã lực, hãy thử như sau:
với (mtcars, mean (mpg)) [1] 20. 09062> với (mtcars, mean (mpg [(1) 15. 40667
Tính số lượng các phần tử trong một vector giống như yêu cầu chiều dài của nó, nghĩa là hàm countif của Excel () có độ dài tương đương R ():
-
với (mtcars, length (mpg [hp> 150])) [1] 13
-
Chuyển tiếp các cột hoặc các hàng
Đôi khi bạn cần chuyển dữ liệu từ các dòng vào cột và ngược lại Trong R, chức năng để chuyển một ma trận là t (): >> xx [1] [2] [3] [1,] 1 5 9 [2,] 2 6 10 [3,] 3 7 11 [4,] 4 8 12
Để có được transpose của một ma trận, sử dụng t (): >> t (x) [1] [2] [3] [4] [1,] 1 2 3 4 [2,] 5 6 7 8 [3,] 9 10 11 12
Bạn cũng có thể sử dụng t () để transpose khung dữ liệu, nhưng hãy cẩn thận khi bạn làm điều này.Kết quả của một transposition luôn luôn là một ma trận (hoặc mảng).Vì mảng luôn luôn có chỉ một loại của biến, chẳng hạn như số hoặc ký tự, loại biến thể của kết quả của bạn có thể không phải là những gì bạn mong đợi.
Tìm giá trị độc đáo hoặc nhân đôi
Để xác định tất cả các giá trị duy nhất trong dữ liệu của bạn, hãy sử dụng chức năng duy nhất (). Hãy thử tìm các giá trị duy nhất của số xi lanh trong mtcars: >> unique (mtcars $ cyl) [1] 6 4 8
Đôi khi bạn muốn biết giá trị dữ liệu của bạn là những bản sao. Tùy thuộc vào tình huống của bạn, những bản sao đó sẽ hợp lệ, nhưng đôi khi mục nhập trùng lặp có thể cho biết các sự cố nhập dữ liệu.
Chức năng xác định các mục trùng lặp được sao chép (). Trong dãy số liệu được xây dựng trong đó, có một dòng nhân đôi trong dòng 143. Hãy thử nó:
dupes head (dupes) [1] FALSE FALSE FALSE FALSE FALSE FALSE> mà (dupes) [1] 143> iris [dupes,] Sepal. Chiều dài Sepal. Rộng cánh hoa. Chiều dài cánh hoa. Width Species 143 5. 8 2. 7 5. 1 1. 9 virginica
Bởi vì kết quả của nhân đôi () là một vector logic, bạn có thể sử dụng nó như là một chỉ mục để loại bỏ các hàng từ dữ liệu của bạn. Để làm điều này, sử dụng toán tử negation - dấu chấm than (như trong! Dupes): >> iris [! Làm việc với bảng tra cứu
Trong một ứng dụng bảng tính như Excel, bạn có thể tạo các bảng tra cứu với các chức năng vlookup hoặc kết hợp các chỉ số và kết hợp.
Trong R, bạn có thể sử dụng hợp nhất () hoặc phù hợp (). Hàm match () trả về một vector với các vị trí của các phần tử khớp với giá trị tra cứu của bạn.
Ví dụ: để tìm vị trí của phần tử "Toyota Corolla" trong tên hàng của mtcars, hãy thử như sau:
index index [1] 20> mtcars [index, 1: 4] mpg cyl disp Công thức làm việc với bảng xoay
Đối với các bảng đơn giản trong R, bạn có thể sử dụng hàm tapply () để đạt được kết quả tương tự như các bảng xoay trong Excel.Đây là một ví dụ về việc sử dụng tapply () để tính hp trung bình cho xe ô tô với số xi lanh và bánh răng khác nhau:
với (mtcars, tapply (hp, danh sách (cyl, gear), mean)) 3 4 5 4 97. 0000 76. 0 102. 0 6 107. 5000 116. 5 175. 0 8 194. 1667 NA 299. 5
Đối với các bảng phức tạp hơn - tức là các bảng có nhiều hơn hai yếu tố phân loại chéo - sử dụng tổng hợp (): >> tổng hợp (hp ~ cyl + gear + am, mtcars, mean) cyl gear am hp 1 4 3 0 97. 00000 2 6 3 0 107. 50000 3 8 3 0 194. 16667 4 4 4 0 78. 50000 5 6 4 0 123. 00000 6 4 4 1 75. 16667 7 6 4 1 110. 00000 8 4 5 1 102. 00000 9 6 5 1 175. 00000 10 8 5 1 299. 50000
Sử dụng mục tiêu tìm kiếm và giải quyết
Trong R, hàm optimize () cung cấp một cơ chế khá đơn giản để tối ưu hóa các chức năng.
Hãy tưởng tượng bạn là giám đốc bán hàng của một công ty và bạn cần phải đặt mức giá tốt nhất cho sản phẩm của bạn. Nói cách khác, hãy tìm giá của một sản phẩm tối đa hóa doanh thu.
Trong kinh tế học, một mô hình đơn giản về định giá cho thấy người ta mua ít sản phẩm nhất định khi giá tăng. Dưới đây là một chức năng đơn giản có hành vi này: >> doanh số bán hàng <- chức năng (giá) {100 - 0. 5 * giá}
Doanh thu dự kiến sau đó chỉ đơn giản là sản phẩm giá và doanh thu dự kiến: >> doanh thu <- chức năng (giá cả) {price * sales (price)}
Bạn có thể sử dụng chức năng curve () để vẽ các hàm liên tục. Điều này có một chức năng như đầu vào và tạo ra một âm mưu. Cố gắng vẽ hành vi bán hàng và doanh thu bằng cách sử dụng hàm curve (), thay đổi giá từ 50 đô la đến 150 đô la:
đường oldpar (doanh thu, từ = 50, đến = 150, xname = "giá", main = "Bán hàng ")> Đường cong (doanh thu, từ = 50, đến = 150, xname =" price ", main =" Revenue ")> par (oldpar)
Kết quả của bạn sẽ giống như thế này.
Một mô hình doanh thu và doanh thu dự kiến.
Bạn có mô hình bán hàng và doanh thu. Bạn có thể thấy ngay rằng có một điểm thu nhập tối đa. Tiếp theo, sử dụng hàm R optimize () để tìm giá trị tối đa đó. Để sử dụng optimization (), bạn cần phải cho biết chức năng nào để sử dụng (trong trường hợp này là doanh thu ()), cũng như khoảng thời gian (trong trường hợp này là giá từ 50 đến 150). Theo mặc định, tối ưu hoá () tìm kiếm một giá trị nhỏ nhất, do đó, trong trường hợp này, bạn phải nói với nó để tìm kiếm giá trị tối đa:
tối ưu hóa (doanh thu, interval = c (50, 150), maximum = TRUE) [1] Mục tiêu 100 $ [1] 5000
Và bạn đi. Tính giá 100 đô la và mong muốn nhận được 5 000 đô la doanh thu.