簡體   English   中英

計算數據框中數字和類別變量的百分比

[英]Calculating percentages for numeric and categorical variables in a data frame

我有一個數據表,其中包含針對不同類的各種數字和類別變量。 我需要對數據進行轉換,以使每個變量最終都有一個不同的數據框,其中第一列中記錄了該變量的每個值,而其他列中顯示了每個類的百分比每個值都在各自的數據集中。 因此,每一列都是針對其中一個類的, dput()應為100。我准備了帶有dput()函數的示例。

我的數據看起來如何

structure(list(ï..class = structure(c(1L, 2L, 1L, 3L, 3L, 4L, 
3L), .Label = c("A", "B", "C", "D"), class = "factor"), var01 = c(150L, 
70L, 70L, 60L, 220L, 10L, 85L), var02 = c(50L, 30L, 50L, 30L, 
120L, 30L, 35L), var03 = c(1L, 1L, 1L, 1L, 5L, 8L, 3L), var04 = c(1L, 
0L, 1L, 0L, 0L, 1L, 0L), var05 = c(2L, 1L, 1L, 0L, 0L, 3L, 0L
)), class = "data.frame", row.names = c(NA, -7L))

在此示例中, Var01Var02Var03是數字,而Var04Var05是分類的。

我對每個變量的需求

structure(list(ï..var01 = c(10L, 60L, 70L, 85L, 150L, 220L), 
A = c(0, 0, 50, 0, 50, 0), B = c(0, 0, 100, 0, 0, 0), C = c(0, 
33.34, 0, 33.34, 0, 33.34), D = c(100, 0, 0, 0, 0, 0)), class = "data.frame", 
row.names = c(NA, -6L))

我嘗試了幾種方法來自己完成,但是鑒於我對RI不太滿意,絲毫沒有成功。

干杯,

亞歷克斯

您可以嘗試以下方法:

library(reshape2)
d2 <- dcast(d, var01 ~ iclass, fun.aggregate = length)
d2[,-1] <- 100 * d2[,-1]/colSums(d2[,-1])[col(d2[,-1])]

結果:

> d2
  var01  A   B        C   D
1    10  0   0  0.00000 100
2    60  0   0 33.33333   0
3    70 50 100  0.00000   0
4    85  0   0 33.33333   0
5   150 50   0  0.00000   0
6   220  0   0 33.33333   0

使用數據

d <- structure(list(iclass = structure(c(1L, 2L, 1L, 3L, 3L, 4L, 3L), .Label = c("A", "B", "C", "D"), class = "factor"),
                    var01 = c(150L, 70L, 70L, 60L, 220L, 10L, 85L), var02 = c(50L, 30L, 50L, 30L, 120L, 30L, 35L),
                    var03 = c(1L, 1L, 1L, 1L, 5L, 8L, 3L), var04 = c(1L, 0L, 1L, 0L, 0L, 1L, 0L),
                    var05 = c(2L, 1L, 1L, 0L, 0L, 3L, 0L)), class = "data.frame", row.names = c(NA, -7L))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM