students <- data.frame( names = c( "Bill", "Stacey", "Fred", "Jane", "Sarah" ),
gender = c( "M", "F", "M", "F", "F" ),
age = c( "10-12", "10-12", "13-15", "7-9", "16-18" ),
stringsAsFactors = FALSE )
Run Code Online (Sandbox Code Playgroud)
我已将下面的函数用于一个变量,但是它不适用于多个变量。
library(dplyr)
result_dplyr <- students %>%
group_by(gender) %>%
summarise(per_to_tot = n() / nrow(student) * 100)
print(result_dplyr)
Run Code Online (Sandbox Code Playgroud)
所需的输出如下。
# gender per to tot
# 1: M 40
# 2: F 60
# age
# 1: 7-9 20
# 2: 10-12 40
# 3: 13-15 20
# 4: 16-18 20
Run Code Online (Sandbox Code Playgroud)
适用于多个变量的 R 代码。
你可以试试
lapply(students[-1], \(x) as.data.frame(proportions(table(x)) * 100))
Run Code Online (Sandbox Code Playgroud)
这使
$gender
x Freq
1 F 60
2 M 40
$age
x Freq
1 10-12 40
2 13-15 20
3 16-18 20
4 7-9 20
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |