我希望你能帮助我解决这个问题:对于我的工作,我必须用R来分析调查数据。数据有许多列,通过这些列我/想要对数据进行分组,然后进行一些计算,例如:有多少男人或女人在某个部门工作?然后计算每个组的数量和百分比。 - >在部门A工作42人,其中30名女性和12名男性,在B部门工作70人,其中26名女性和44名男性。
我目前使用以下代码输出数据(使用ddply):
percentage_median_per_group_multiple_columns <- function(data, column_name, column_name2){
library(plyr)
descriptive <- ddply( data, column_name,
function(x){
percentage_median_per_group(x, column_name)
percentage_median_per_group(x, column_name2)
}
)
print(data.frame(descriptive))
}
## give number, percentage and median per group_value in column
percentage_median_per_group <- function(data, column_name3){
library(plyr)
descriptive <- ddply( data, column_name3,
function(x){
c(
N <- nrow(x[column_name3]), #number
pct <- (N/nrow(data))*100 #percentage
#TODO: median
)
}
)
return(descriptive)
}
#calculate
percentage_median_per_group_multiple_columns(users_surveys_full_responses, "department", "gender")
现在数据输出如下:
Department Sex N % per sex
A f 30 71,4
m 12 28,6
B f 26 37,1
m 44 62,9
但是,我希望输出看起来像这样,所以进行计算并打印在每个子步骤中:
Department N % per department Sex N % per sex
A 42 37,5 f 30 71,4
m 12 28,6
B 70 62,5 f 26 37,1
m 44 62,9
有没有人建议我如何做到这一点,如果可能的话甚至可以将它构建为动态,这样我就可以通过多列中的变量对它进行分组(例如部门+性别+软件类型+ ...),但是我如果我能够像示例中那样拥有它,那将会很高兴=)
谢谢!
修改 您可以使用它来生成示例数据:
n=100
sample_data = data.frame(department=sample(1:20,n,replace=TRUE), gender=sample(1:2,n,replace=TRUE))
percentage_median_per_group_multiple_columns(sample_data, "department", "gender")
输出中的V1代表N(数字),V2代表%