我希望能够计算" Y"的百分比。和" N"在我的数据框中为多列(例如,Y和Z),所以我尝试了:
Data <- data.frame(
X = sample(1:10),
Y = sample(c("Y", "N"), 10, replace = TRUE),
Z = sample(c("Y", "N"), 10, replace = TRUE), stringsAsFactors=FALSE)
table(Data$Y)
prop.table(Data$Y)
...但是会产生:sum(x)中的错误:无效&#39;类型&#39;论证的(字符)
所以,我尝试不改为变量类型字符,而是使用因子:
Data <- data.frame(
X = sample(1:10),
Y = sample(c("Y", "N"), 10, replace = TRUE),
Z = sample(c("Y", "N"), 10, replace = TRUE))
table(Data$Y)
prop.table(Data$Y)
...但是会产生:Summary.factor中的错误(c(1L,2L,1L,1L,2L,2L,2L,2L,2L,2L),na.rm = FALSE):'sum'not not not对因素有意义
所以,我尝试将其转换为数字:
transform(Data, Y = as.numeric(Y))
...但这产生了先前的因素错误。
你如何计算&#34; Y&#34;的百分比?和&#34; N&#34;在多列中用于图表,图表等?
答案 0 :(得分:5)
你需要做
prop.table(table(Data$Y))
### N Y
### 0.4 0.6
(使用您的data.frame版本)
编辑:如果您需要为每个列重复计算(假设它们都是二进制变量),您可以这样做:
sapply(Data[, -1], function(x) prop.table(table(x)))
### Y Z
### N 0.3 0.4
### Y 0.7 0.6
(&#39;数据[,-1]&#39;此处删除第一列)