【问题标题】:Calculating Percentages For "Y" and "N" In Multiple Columns?计算多列中“Y”和“N”的百分比?
【发布时间】:2015-05-06 04:15:20
【问题描述】:

我希望能够在我的数据框中为多个列(例如 Y 和 Z)计算“Y”和“N”的百分比,所以我尝试了:

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) 中的错误:参数的“类型”(字符)无效

所以,我尝试不更改为可变类型字符,而是使用因子:

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对因子有意义

所以,我尝试将其转换为数字:

transform(Data, Y = as.numeric(Y))

...但这产生了先前的因素错误。

如何计算用于图表、图形等的多列中“Y”和“N”的百分比?

【问题讨论】:

    标签: r


    【解决方案1】:

    你需要做的

    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
    

    (这里的'Data[, -1]'是去掉第一列)

    【讨论】:

    • 谢谢。这适用于一列。是否可以将“Y”和“N”的多列计算为百分比,还是必须为每列分别键入每个函数?
    猜你喜欢
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-23
    • 2023-02-01
    • 1970-01-01
    相关资源
    最近更新 更多