【发布时间】:2026-01-13 17:35:01
【问题描述】:
我觉得这应该比较简单。我正在使用最新版本的 R。在数据框中,我有一列 ID 号称为 PairID,还有一列称为物种,包含 15 个不同的物种。我想知道所有 15 种的 PairID 编号。
数据框看起来像
head(analysis.df)
species PairID
DIKDIK 1
GAZELLE 2
GIRAFFE 1
ELAND 5
GIRAFFE 3
DIKDIK 2
我的想法是运行这个:
for(i in 1:nrow(analysis.df)) {
if (analysis.df$species[i]=="GRANTS GAZELLE") {analysis.df$GRANTS GAZELLE[i] <- 1}
else if (analysis.df$species[i]=="DIKDIK") {analysis.df$DIKDIK[i] <- 1
else if (analysis.df$species[i]=="IMPALA") {analysis.df$IMPALA[i] <- 1}
else if (analysis.df$species[i]=="BUFFALO") {analysis.df$BUFFALO[i] <- 1}
else if (analysis.df$species[i]=="BUSHBUCK") {analysis.df$BUSHBUCK[i] <- 1}
else if (analysis.df$species[i]=="GIRAFFE") {analysis.df$GIRAFFE[i] <- 1}
else if (analysis.df$species[i]=="ELAND") {analysis.df$ELAND[i] <- 1}
else if (analysis.df$species[i]=="GERENUK") {analysis.df$GERENUK[i] <- 1}
else if (analysis.df$species[i]=="LESSER KUDU") {analysis.df$LESSER KUDU[i] <- 1}
else if (analysis.df$species[i]=="HARTEBEEST") {analysis.df$HARTEBEEST[i] <- 1}
else if (analysis.df$species[i]=="STEENBOK") {analysis.df$STEENBOK[i] <- 1}
else if (analysis.df$species[i]=="ORYX") {analysis.df$ORYX[i] <- 1}
else if (analysis.df$species[i]=="REEDBUCK") {analysis.df$REEDBUCK[i] <- 1}
else if (analysis.df$species[i]=="THOMSONS GAZELLE") {analysis.df$THOMSONS GAZELLE[i] <- 1}
else if (analysis.df$species[i]=="WATERBUCK") {analysis.df$WATERBUCK[i] <- 1}
}
然后我可以尝试summary 对所有这些新创建的列中所有带有 1 的行。
但是这段代码给出了错误:
> Error: unexpected symbol in:
"for(i in 1:nrow(analysis.df)){
if (analysis.df$species[i]=="GRANTS GAZELLE") {analysis.df$GRANTS GAZELLE"
我查看了here 和here 以及R 和谷歌搜索中的一些小插曲,但到目前为止还没有破解它。我什至不确定这种方法能否满足我的需求,我很乐意看看任何建议,以实现本文开头所述的目标。
【问题讨论】:
标签: r loops if-statement