Kla*_*uis 11 r unique count categories
我在R中的数据看起来像这样:
Cnty Yr Plt Spp DBH Ht Age
1 185 1999 20001 Bitternut 8.0 54 47
2 185 1999 20001 Bitternut 7.2 55 50
3 31 1999 20001 Pignut 7.4 71 60
4 31 1999 20001 Pignut 11.4 85 114
5 189 1999 20001 WO 14.5 80 82
6 189 1999 20001 WO 12.1 72 79
Run Code Online (Sandbox Code Playgroud)
我想知道每个县(Cnty)的独特物种(Spp)的数量."unique(dfname $ Spp)"给了我数据框中唯一种类的总数,但是我想按县一样.
任何帮助表示赞赏!很抱歉奇怪的格式化,这是我第一个关于SO的问题.
谢谢.
A5C*_*2T1 16
我试图让你的样本数据更有趣.您的样本数据目前每个"Cnty"只有一个唯一的"Spp".
set.seed(1)
mydf <- data.frame(
Cnty = rep(c("185", "31", "189"), times = c(5, 3, 2)),
Yr = c(rep(c("1999", "2000"), times = c(3, 2)),
"1999", "1999", "2000", "2000", "2000"),
Plt = "20001",
Spp = sample(c("Bitternut", "Pignut", "WO"), 10, replace = TRUE),
DBH = runif(10, 0, 15)
)
mydf
# Cnty Yr Plt Spp DBH
# 1 185 1999 20001 Bitternut 3.089619
# 2 185 1999 20001 Pignut 2.648351
# 3 185 1999 20001 Pignut 10.305343
# 4 185 2000 20001 WO 5.761556
# 5 185 2000 20001 Bitternut 11.547621
# 6 31 1999 20001 WO 7.465489
# 7 31 1999 20001 WO 10.764278
# 8 31 2000 20001 Pignut 14.878591
# 9 189 2000 20001 Pignut 5.700528
# 10 189 2000 20001 Bitternut 11.661678
Run Code Online (Sandbox Code Playgroud)
接下来,如所建议的,tapply这里是一个很好的候选人.合并unique并length获取您要查找的数据.
with(mydf, tapply(Spp, Cnty, FUN = function(x) length(unique(x))))
# 185 189 31
# 3 2 2
with(mydf, tapply(Spp, list(Cnty, Yr), FUN = function(x) length(unique(x))))
# 1999 2000
# 185 2 2
# 189 NA 2
# 31 1 1
Run Code Online (Sandbox Code Playgroud)
如果您对简单列表(不是唯一值)感兴趣,那么您可以探索table并ftable:
with(mydf, table(Spp, Cnty))
# Cnty
# Spp 185 189 31
# Bitternut 2 1 0
# Pignut 2 1 1
# WO 1 0 2
ftable(mydf, row.vars="Spp", col.vars=c("Cnty", "Yr"))
# Cnty 185 189 31
# Yr 1999 2000 1999 2000 1999 2000
# Spp
# Bitternut 1 1 0 1 0 0
# Pignut 2 0 0 1 0 1
# WO 0 1 0 0 2 0
Run Code Online (Sandbox Code Playgroud)
正如贾斯汀提到的,聚合可能就是您想要的。如果您将数据框命名为 foo,那么以下内容应该为您提供您想要的内容,即每个物种的个体数量,假设每行包含胡桃的行代表属于胡桃物种的唯一个体。注意我使用 foo$Age 来计算向量的长度,即属于每个物种的个体(行)的数量,但您可以使用 foo$Ht 或 foo$DBH 等。
aggregate(foo$Age, by = foo[c('Spp','Cnty')], length)
Run Code Online (Sandbox Code Playgroud)
干杯,
丹尼
| 归档时间: |
|
| 查看次数: |
34753 次 |
| 最近记录: |