gpt4 book ai didi

r - 根据 r 中的范围类别创建汇总表

转载 作者:行者123 更新时间:2023-12-02 22:14:14 26 4
gpt4 key购买 nike

我的数据采用以下格式:

input<-data.frame(
region=c("A","T","R","R","T"),
geomorph=c("F","F","S","S","P"),
depth=c(2.6,3.5,5.8,6.7,8.9))

> input
region geomorph depth
1 A F 2.6
2 T F 3.5
3 R S 5.8
4 R S 6.7
5 T P 8.9

我想创建一个汇总表,以便对于给定的深度类别(即 0-3,3-6,6-10)区域(即 A、R、T)和地貌(即F,S,P) 的计算和呈现如下:

output<-data.frame(
depth.category=c("0-3","3-6","6-10"),
total=c(1,2,2),
A=c(1,0,0),
R=c(0,1,1),
T=c(0,1,1),
F=c(1,1,0),
S=c(0,1,1),
P=c(0,0,1))

> output
depth.category total A R T F S P
1 0-3 1 1 0 0 1 0 0
2 3-6 2 0 1 1 1 1 0
3 6-10 2 0 1 1 0 1 1

有什么建议可以解决这个问题吗?

最佳答案

首先,只需使用cut 创建您的区间,然后使用tablecbind 结果:

intervals <- cut(input$depth, breaks=c(0, 3, 6, 10))

cbind(table(intervals),
table(intervals, input$region),
table(intervals, input$geomorph))
# A R T F P S
# (0,3] 1 1 0 0 1 0 0
# (3,6] 2 0 1 1 1 0 1
# (6,10] 2 0 1 1 0 1 1

上面的输出是一个矩阵。如果您需要 data.frame,请使用以下内容:

temp <- cbind(table(intervals),
table(intervals, input$region),
table(intervals, input$geomorph))

temp <- data.frame(depth.category = rownames(temp),
as.data.frame(temp, row.names = 1:nrow(temp)))
names(temp)[2] <- "Total"
temp
# depth.category Total A R T F P S
# 1 (0,3] 1 1 0 0 1 0 0
# 2 (3,6] 2 0 1 1 1 0 1
# 3 (6,10] 2 0 1 1 0 1 1

关于r - 根据 r 中的范围类别创建汇总表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14748562/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com